什么是Kotlin Coroutines的'Async / Await`的非暂停版本?

时间:2018-03-09 01:45:44

标签: kotlin kotlinx.coroutines

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

是否有.await()的版本可以在Deferred<T>的暂停功能之外调用?我想阻止当前线程,直到Deferred<T>返回。

1 个答案:

答案 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