从一个协程异步下载多个内容

时间:2019-09-30 14:41:37

标签: kotlin-coroutines

是否可以仅使用一个协程异步下载多个内容?例如,我有一个URL数组,但是我只能从协程内部获取此数组。有了数组后,我想下载数组中每个URL的内容,但是所有这些都是异步完成的:

withContext(appDispatchers.IO) {
    val Urls = getUrlsFromBackend()

    // Download the content for each url asynchronously

}

1 个答案:

答案 0 :(得分:0)

您可以创建子协程。每个协程都是并发单位,因此您为每个url创建一个。

withContext(appDispatchers.IO) {
    val Urls = getUrlsFromBackend()

    // Download the content for each url asynchronously
    val contents = Urls.map{ async { dowloadContent(it) } }.awaitAll()
    // Use contents
}