Асинхронная загрузка нескольких материалов из одной сопрограммы - PullRequest
0 голосов
/ 30 сентября 2019

Можно ли асинхронно загружать несколько материалов, используя только одну сопрограмму? Например, у меня есть массив URL-адресов, но я могу получить этот массив только из сопрограммы. Как только у меня будет массив, я хотел бы загрузить содержимое для каждого URL в массиве, но там, где все они выполняются асинхронно:

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

    // Download the content for each url asynchronously

}

1 Ответ

0 голосов
/ 30 сентября 2019

Вы можете создавать дочерние сопрограммы. Каждая сопрограмма является единицей параллелизма, поэтому вы создаете ее для каждого URL.

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

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