【发布时间】:2021-12-18 04:53:52
【问题描述】:
我目前正在开发一个在很多地方都使用runBlocking 的代码库。
这是一个例子
fun doSomeComputation() {
val rows = runBlocking { //suspend function which queries database }
//rows is used for further computation
}
据我了解runBlocking 阻塞了当前线程。那么通过使用它而不是使用常规函数,我们到底得到了什么好处呢?读到我们使用异步代码的地方,这样线程就不会被阻塞并且 UI 不会变得无响应,但是如何使用 runBlocking 异步代码,因为它阻塞了线程?
我对 javascript async/await 有同样的疑问
既然线程被阻塞了为什么还要使用await?
【问题讨论】:
-
它可能在主函数中很有用。
标签: kotlin asynchronous async-await kotlin-coroutines nonblocking