2 回答

TA貢獻1858條經驗 獲得超8個贊
除了回調,您還可以使用 一個Predicate來決定是否需要再次撥打電話。
我在這里1演示了帶有 Thread 的異步服務調用。這可能適合您,也可能不適合。如果您能向我們展示在服務返回響應后如何調用回調,將會更有幫助。
public void getMessages(Date from, Date to, Predicate<List<Message>> shouldMakeAnotherCall) {
new Thread(() -> {
List<Message> messages = //Call service
if (shouldMakeAnotherCall.apply(messages)) {
getMessages(from, to, shouldMakeAnotherCall);
}
}).start();
}
Predicate<List<Message>> shouldMakeAnotherCall = listOfMessages -> listOfMessages.size() == 2000;
getMessages(from, to, shouldMakeAnotherCall);
1這使得后續調用每個都創建一個新線程,因此不是一個很好的調用。

TA貢獻1777條經驗 獲得超10個贊
這個怎么樣?
List<Message> allMessages = new ArrayList<>();
Callback<List<Message>> onSuccessCallback = messages -> {
//save all the messages returned
allMessages.addAll(messages);
if(messages.size()==2000){
//get the last message date
Date nextDate = messages.get(messages.size() - 1).getDateTime();
//query next messages
getMessages(nextDate, toDate, onSuccessCallback);
}
};
getMessages(fromDate, toDate, onSuccessCallback);
添加回答
舉報