Avatar ·

Quelle est la différence entre launch/join et async/await dans les coroutines Kotlin ?

Bonjour ! J'ai commencé à étudier les coroutines en Kotlin et je me suis perdu entre les deux approches principales. Quand j'écris du code, je vois qu'on peut lancer une coroutine via `launch`, puis attendre sa fin avec `join()`. Et il y a aussi `async` avec `await()`. À première vue, ils font la même chose — lancer un travail en arrière-plan et attendre le résultat. Mais je sens qu'il y a une différence, et qu'elle est importante. Voici un exemple simple où j'essaie de charger des données depuis deux sources et de les combiner. Avec launch/join, j'obtiens ceci : ```kotlin fun main() = runBlocking { var data1 = "" var data2 = "" val job1 = launch { delay(1000) // simulation de chargement data1 = "Données de l'API 1" } val job2 = launch { delay(1000) data2 = "Données de l'API 2" } job1.join() job2.join() println("$data1 + $data2") // Ça marche, mais ce n'est pas joli } ``` Et avec async/await, je fais ceci : ```kotlin fun main() = runBlocking { val deferred1 = async { delay(10