And*_*rew 4 android kotlin kotlin-coroutines
我正在尝试使用 kotlin 协程,我问自己,如何在同一个挂起函数中执行多项工作(例如同时调用网络和本地数据库)。研究这个问题使我得到了以下解决方案:
suspend fun doWorkInParallel() {
coroutineScope {
val networkCall = async { // stuff }
val databaseCall = async { // stuff }
awaitAll(networkCall, databaseCall)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
networkCall当和 访问databaseCall同一个对象/更改同一个对象时会发生什么(例如,在networkCalla 变量内部设置为State X,在 adatabaseCall变量内部设置为Stata Y)这段代码非常好,它正是您应该如何使用协程执行并行计算的方式。如果不需要两个调用的返回值,可以替换async()为launch()并删除awaitAll()行。coroutineScope()自动等待其所有子项完成,因此您无需手动执行此操作。
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |