Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中同步循环,以便手动增加循环值(当某些执行完成时)_Java_Android_Loops_For Loop_Synchronous - Fatal编程技术网

如何在java中同步循环,以便手动增加循环值(当某些执行完成时)

如何在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

我有一个简单的场景

我想在循环内调用异步方法(可能是api调用)。我想多次调用同一个api,但在前一个api调用完成之前,不要执行下一个api调用

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循环执行此任务