如何在java中同步循环,以便手动增加循环值(当某些执行完成时)
我有一个简单的场景 我想在循环内调用异步方法(可能是api调用)。我想多次调用同一个api,但在前一个api调用完成之前,不要执行下一个api调用如何在java中同步循环,以便手动增加循环值(当某些执行完成时),java,android,loops,for-loop,synchronous,Java,Android,Loops,For Loop,Synchronous,我有一个简单的场景 我想在循环内调用异步方法(可能是api调用)。我想多次调用同一个api,但在前一个api调用完成之前,不要执行下一个api调用 for(int i = 0; i < 10; i++){ apicall{ apiresult } } for(int i=0;i
for(int i = 0; i < 10; i++){
apicall{
apiresult
}
}
for(int i=0;i<10;i++){
阿皮卡尔{
芹菜
}
}
上述方法将正常运行循环10次,而无需等待api调用方法完成。我想做的是在前一个api完成后调用下一个api
for(int i = 0; i < 10; i++){
apicall{
apiresult
}
}
例如:-
for(int i = 0; i < 10; i++){
apicall{
apiresult
// RUN NEXT LOOP AFTER THIS IS COMPLETE
}
}
for(int i=0;i<10;i++){
阿皮卡尔{
芹菜
//完成后运行下一个循环
}
}
我尝试使用
while
循环,但它太慢而且不可靠。可以使用递归。大致如下:
void makeAPICalls(int numberOfCalls) {
numberOfCalls--;
if (numberOfCalls > 0) {
apiCall {
apiResult
// when result arrives call this again
makeAPICalls(numberOfCalls)
}
}
}
然后您可以这样调用函数:
makeAPICalls(10)
您可以使用递归。大致如下:
void makeAPICalls(int numberOfCalls) {
numberOfCalls--;
if (numberOfCalls > 0) {
apiCall {
apiResult
// when result arrives call this again
makeAPICalls(numberOfCalls)
}
}
}
然后您可以这样调用函数:
makeAPICalls(10)
您可以使用Livedata而不是for循环执行此任务您可以使用Livedata而不是for循环执行此任务