【问题标题】:Hold loop execution till a callback has completed保持循环执行直到回调完成
【发布时间】:2021-03-04 03:41:05
【问题描述】:

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

var count = 0 
var found = false

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

        failed() {
            count++
        }
    }

    SampleApi.start(A)
}

在上面的示例代码中,我想让 while 循环执行停止并保持,并且只有在触发回调方法时才增加迭代。

【问题讨论】:

  • 协程怎么样?
  • 你能举个例子吗? @AnimeshSahu,我尝试使用 runBlocking 但它不起作用
  • 这能回答你的问题吗? Passing MutableLiveData between functions
  • @AnimeshSahu 感谢分享链接,但此解决方案不适用于我的情况
  • 我不想写完整的答案,但你可以这样做:pl.kotl.in/X09iwBsPc

标签: android loops kotlin concurrency async-await


【解决方案1】:

只需响应您上面的伪代码,下面可能是仅在获得 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)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    相关资源
    最近更新 更多