2
fun nonSuspendingFunction(): Boolean {
    return async(UI) { true }
        .await() // compiler error, can be called only within a suspending function
}

是否有.await()可以在 a 的挂起函数之外调用的版本Deferred<T>?我想阻止当前线程直到Deferred<T>返回。

4

1 回答 1

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
于 2018-03-09T05:05:25.270 回答