【发布时间】:2021-06-10 14:42:48
【问题描述】:
我有一个向 API 发出不同请求的视图模型,我目前正在像这样调用我的 API
val call1 = repo.getCall1()
val call2 = repo.getCall2()
val call3 = repo.getCall3()
val call4 = repo.getCall4()
val call5 = repo.getCall5()
val call6 = repo.getCall6()
这种方法的问题是我需要等待每个人完成启动另一个,在我对 repo 进行调用(都是挂起函数)之后,我通知 livedatas,但这需要一点时间(4 - 5 秒),我想同时进行所有呼叫,并在通知我的 livedata 之前一次性捕获它们
我正在寻找类似的东西
myCoroutineScope.launch {
call1 = repo.getCall1()
call2 = repo.getCall2()
call3 = repo.getCall3()
call4 = repo.getCall4()
call5 = repo.getCall5()
call6 = repo.getCall6()
}.awaitForAllToFinish()
我想使用 async - await 而不是作业
【问题讨论】:
-
在 Kotlin 中,async-await 是工作,与您
launch的工作相同。唯一的区别是您不期望来自launched 作业的结果值。你甚至使用返回值吗?如果没有,那么你不需要async,应该使用coroutineScope { launch(task1); launch(task2) ... }
标签: android kotlin kotlin-coroutines