【问题标题】:How to trigger a function onAwait of a CompletableDeferred<String>?如何触发 CompletableDeferred<String> 的 onAwait 函数?
【发布时间】:2018-08-04 06:03:36
【问题描述】:

我正在尝试在创建图像时对其进行索引。我认为这很容易:

val saveLocation = CompletableDeferred<String>()
saveLocation.onAwait { loc:String ->
    MediaScannerConnection.scanFile(applicationContext, arrayOf(loc), null, null)
}

但上面写着Expression onAwait of type SelectClause1&lt;String&gt; cannot be invoked as a function,所以也许我用错了?有没有办法注册 CompletableDeferred 完成时要调用的函数?

【问题讨论】:

    标签: kotlin kotlinx.coroutines


    【解决方案1】:

    onAwait 是一个返回 SelectClause1&lt;T&gt; 的属性

    所以你会使用这样的东西

    val clause = saveLocation.onAwait
    clause.registerSelectClause1( // your args here)
    

    但是,如果你想要延迟的结果,为什么不启动一个协程并调用await

    launch {
      val result = saveLocation.await()
      MediaScannerConnection.scanFile(applicationContext, arrayOf(result), null, null)
    }
    

    【讨论】:

    • 额头拍打 是的,这样更容易。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2015-11-23
    • 1970-01-01
    • 2022-08-19
    • 2019-06-01
    • 2020-02-20
    • 2019-04-07
    相关资源
    最近更新 更多