Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Android 保持循环执行,直到回调完成_Android_Loops_Kotlin_Concurrency_Async Await - Fatal编程技术网

Android 保持循环执行,直到回调完成

Android 保持循环执行,直到回调完成,android,loops,kotlin,concurrency,async-await,Android,Loops,Kotlin,Concurrency,Async Await,我正在寻找一种很好的方法,使while循环等待其迭代,直到启动回调为止,请查看下面的示例伪代码,在我的android项目中,我正在使用Kotlin: var count = 0 var found = false while(count < 3 && found) { callback A = { succcess() { count++ found = true }

我正在寻找一种很好的方法,使while循环等待其迭代,直到启动回调为止,请查看下面的示例伪代码,在我的android项目中,我正在使用Kotlin:

var count = 0 
var found = false

while(count < 3 && found) {
    callback A = {
        succcess() {
            count++
            found = true
        }

        failed() {
            count++
        }
    }

    SampleApi.start(A)
}
var计数=0
发现的var=false
while(计数<3&&found){
回调A={
成功(){
计数++
找到=真
}
失败(){
计数++
}
}
SampleApi.start(A)
}

在上面的示例代码中,我希望使while循环执行停止并保持,并且仅在触发回调方法后增加迭代。

仅响应上面的伪代码,下面可能是仅在从API获得响应后更新数据的解决方案。而不是while循环,只需通过传递零作为起始参数来调用下面的方法

    fun recursiveMethodCall(count: Int){
    callback A = {
        succcess() {
            if (count < 2){
                found = true
                loopMethodCall(count+1)
            }
        }

        failed() {
            if (count < 2){
                loopMethodCall(count+1)
            }
        }
    }

    SampleApi.start(A)
}
fun递归方法调用(计数:Int){
回调A={
成功(){
如果(计数<2){
找到=真
loopMethodCall(计数+1)
}
}
失败(){
如果(计数<2){
loopMethodCall(计数+1)
}
}
}
SampleApi.start(A)
}

Coroutines如何?您能举一些例子说明如何实现它吗@AnimeshSahu,我试过使用runBlocking,但它不起作用。这能回答你的问题吗@Animeshahu感谢分享链接,但此解决方案不适用于我的情况我不想写完整的答案,但你可以这样做: