gpt4 book ai didi

android - 完成 Kotlin 中的异步调用列表

转载 作者:行者123 更新时间:2023-12-04 23:58:02 24 4
gpt4 key购买 nike

我们有一个本质上是异步的操作列表。我们想要完成所有的操作让我们说并且想要做另一个任务。我对 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.
}
}

最佳答案

我认为对列表中的每个项目执行异步任务的一种干净方法是使用 map然后 awaitAll .结果列表包含协程恢复后的所有结果。

从协程内部:

val unpackedData = results.data.orEmpty().map {
async {
it.unpair().done()
// I don't really know what type of object this is, but you can do anything in
// this block and whatever the lambda eventually returns is what the list will
// contain when the outer coroutine resumes at the awaitAll() call
}
}.awaitAll()
// Make other calls here. This code is reached when all async tasks are done.
orEmpty()函数是将可空列表转换为不可空列表的便捷方法,通过删除分支使代码更简单。有时它并不真正适用,但通常您可以消除嵌套的 if 语句或提前返回。就像如果你迭代你的结果数据并且它是空的,那可能很好。

关于android - 完成 Kotlin 中的异步调用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61760724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com