android - 使用协程进行多次循环调用

标签 android multithreading kotlin kotlin-coroutines

我需要并行进行多个调用,并且仅在协程一切成功时才发送结果

我想一次调用几个页面。因为 API 有 4 个页面,我想一次性提供所有结果。

我设法像这样手动完成:

private fun fetchList() {
    viewModelScope.launch {
        val item1 = async { repository.getList(1)!! }
        val item2 = async { repository.getList(2)!! }
        val item3 = async { repository.getList(3)!! }
        val item4 = async { repository.getList(4)!! }

        launch {
            mutableLiveDataList.success(item1.await() + item2.await() + item3.await() + item4.await())
        }
    }
}

但是当我尝试循环播放它时,它只会显示其中一页。

接口(interface):
@GET("cards")
suspend fun getListCards(@Query("set") set: String, @Query("page") page: Int): CardsResponse

最佳答案

我做了 @curioustechizen说,它奏效了。

这是它的外观示例:

private fun fetchList() {
    viewModelScope.launch {

        val listPageNumbers = arrayListOf<Int>()
        (1..4).forEach { listPageNumbers.add(it) }

        listPageNumbers.map {
            delay(1000)
            async {
                mutableLiveDataList.success(repository.getListCards(it)!!)
            }
        }.awaitAll()
    }
}

关于android - 使用协程进行多次循环调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686972/

相关文章:

c++ - 将 std::thread 分配给 vector<std::thread> 时出现段错误

android - Robolectric 测试和 LiveData

Kotlin native 互操作链接器找不到框架

kotlin - 如何通过两个属性和排序器对对象列表进行排序

android - 保存android应用程序的状态?

android - 在 Android 存储中创建、存储和访问文件?

android - 第一个 Android 应用程序 - 循环浏览列表,一次一个

android - 如果单击复选框,我的 list 应该保存在 Xml 中如何?

java - 为什么这个 Java 程序没有显示我期望的结果?

java - 为什么在syncedList()或Vector已经同步的情况下,为什么我们仍然需要外部同步?