我正在尝试为图像创建索引。我认为这很简单:

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

但是它说Expression onAwait of type SelectClause1<String> cannot be invoked as a function,所以也许我用错了吗? CompletableDeferred完成时,是否可以注册要调用的函数?

最佳答案

onAwait是一个返回SelectClause1<T>的属性

所以你会用这样的东西

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

但是,如果您想要延迟的结果,为什么不启动协程并调用await呢?
launch {
  val result = saveLocation.await()
  MediaScannerConnection.scanFile(applicationContext, arrayOf(result), null, null)
}

09-28 12:08