fun nonSuspendingFunction(): Boolean {
return async(UI) { true }
.await() // compiler error, can be called only within a suspending function
}
是否有.await()
的版本可以在Deferred<T>
的暂停功能之外调用?我想阻止当前线程,直到Deferred<T>
返回。
答案 0 :(得分:3)
runBlocking
正是您要找的。
import kotlinx.coroutines.experimental.async
import kotlinx.coroutines.experimental.runBlocking
fun blocks() = runBlocking {
async { true }.await()
}
我刚用一个非常简单的main
函数测试了上面的代码:
fun main(args: Array<String>) {
blocks().let(::println)
}
输出:
true