Kotlin कोरूटीन में launch/join और async/await में क्या अंतर है?
नमस्ते! मैंने Kotlin में कोरूटीन सीखना शुरू किया है और दो मुख्य दृष्टिकोणों में उलझ गया हूँ। जब मैं कोड लिखता हूँ, तो देखता हूँ कि कोरूटीन को `launch` के माध्यम से शुरू किया जा सकता है और फिर `join()` के माध्यम से इसके पूरा होने की प्रतीक्षा की जा सकती है। और `async` भी है जिसमें `await()` है। पहली नज़र में वे एक ही काम करते हैं — बैकग्राउंड कार्य शुरू करना और परिणाम की प्रतीक्षा करना। लेकिन मुझे लगता है कि अंतर है, और यह महत्वपूर्ण है।
यहाँ एक सरल उदाहरण है जहाँ मैं दो स्रोतों से डेटा लोड करने और उन्हें संयोजित करने का प्रयास कर रहा हूँ। launch/join के साथ यह इस प्रकार है:
```kotlin
fun main() = runBlocking {
var data1 = ""
var data2 = ""
val job1 = launch {
delay(1000) // लोडिंग का अनुकरण
data1 = "API 1 से डेटा"
}
val job2 = launch {
delay(1000)
data2 = "API 2 से डेटा"
}
job1.join()
job2.join()
println("$data1 + $data2") // काम करता है, लेकिन बदसूरत है
}
```
और async/await के साथ मैं ऐसा करता हूँ:
```kotlin
fun main() = runBlocking {
val deferred1 = async {
delay(10