与android coroutine合并结果启动未知数量的网络请求

时间:2019-06-26 12:46:59

标签: android asynchronous kotlin-coroutines

我有一份url请求清单,我想从中得出一个综合结果。我希望请求同时触发,而不是等待所有返回。

另一个问题,如果失败,我该如何避免结果,而与其他人继续。

第一个问题是我目前正在做什么:

suspend fun getFromNetworkDynamic() {
    withContext(Dispatchers.Default) {

    myDao.deleteAll()

    val sources = getSources()
    val asynctasks: MutableList<Deferred<List<SomeData>>> = mutableListOf()
    for (source in sources) {
        val data = async {
            return@async response myApiService.getRequestAsync(source.link).await()

        }

        asynctasks.add(data)
    }

    for (asynctask in asynctasks) {
        myDao.bulkInsert(asynctask.await())

    }
}
}

有更好的解决方案吗? 在一个请求失败但继续执行其余请求的情况下,如何添加错误处理?

0 个答案:

没有答案