这是我打开新协程的每个项目的代码,但问题是我想要优化它,并做一些限制,假设有5个协程,我知道有一个协程操作的解决方案,但我不知道如何在这里介绍它们。任何帮助都可能是有用的
uiScope.launch {
val infoItem = fetchItems(item.query)
infoItems.add(infoItem)
itemsMutableData.postValue(infoItems)
}
}
override suspend fun fetchItems(query: String): Response<List<Item>>{
return suspendCoroutine {})
}
}发布于 2019-08-15 02:54:58
我希望我猜对了你的问题。你有一堆Stuff,并且必须为它们中的每一个进行异步调用。为他们中的每一个创建一个协程都很好。
val stuffList: List<Stuff> = ...
stuffList.map {
launch {
process(it)
}
}.joinAll()但是这段代码一次启动了很多请求。所以你想限制并发,可能最多5个并发调用。
它的“最佳”模式仍然是github上的an open issue。你应该看看他们的想法。
现在,您可以使用一个简单的实现。
创建一个work Channel,将内容发送到它,然后关闭该receive中的it.
launch n协程,并处理该Channel,直到到达Stuff。https://stackoverflow.com/questions/57497108
复制相似问题