android - 完成 Kotlin 中的异步调用列表
问题描述
我们有一个本质上是异步的操作列表。我们想要完成所有的操作让我们说并且想要做另一个任务。我对 Kotlin Coroutines 概念完全陌生,无法完成这项任务。我在互联网上搜索了很多,但由于我没有使用 kotlin 协程或其他 kotlin 异步服务来执行此操作的整体经验。任何人都知道如何完成这项任务将非常有帮助。假设我在列表中有 20 个元素,我想对每个元素进行操作,这本质上是异步的。
response.data?.let { dataArray ->
if (dataArray.isNotEmpty()) {
it.forEach {
it.unpair().done{
// Async call.
}
}
// All async operation completed do another task.
} else {
// Array is empty.
}
}
解决方案
确保您在协程范围内运行它
val requests = ArrayList<Deferred<Unit>>()
val dataArray = response.data ?: return
dataArray.forEach { data ->
data.unpair().done {
// YOUR METHOD starts running immediately
requests.add( async { YOUR METHOD } )
}
}
// Waits for all YOUR METHOD's to finish
requests.awaitAll()
推荐阅读
- javascript - JQuery 项目不可点击甚至设置点击(真)
- javascript - Mongoose TypeError:无法读取未定义的属性“googleID”
- svg - 将 react-svg-loader 添加到 webpack
- java - 如何在两个字符串中找到导致它们不相等的字符?
- java - Spring Boot 2 @WebMvcTest 和 OAuth2 #oauth2.hasScope 控制器导致 IllegalArgumentException
- facebook - Facebook Graph API:如何找到 object_id?
- javascript - JavaScript:删除数组中所有重复的元素?
- asp.net - 删除列后不触发 GridView RowCommand
- angular - Angular 反应式表单输入验证在负载上不起作用
- python - VS Code Python 超时等待调试器连接