Sobes.tech
Junior — Middle

Πώς μπορούμε να ξεκινήσουμε ταυτόχρονα δύο δικτυακά αιτήματα χρησιμοποιώντας κορουτίνες και να ενώσουμε τις απαντήσεις τους;

sobes.tech AI

Απάντηση από AI

Για την ταυτόχρονη εκτέλεση δύο αιτημάτων δικτύου χρησιμοποιώντας κορουτίνες στο Android, μπορείτε να χρησιμοποιήσετε τη λειτουργία async μέσα σε μια κορουτίνα και στη συνέχεια να συνδυάσετε τα αποτελέσματα με await. Παράδειγμα σε Kotlin:

import kotlinx.coroutines.*

suspend fun fetchData(): Pair<Response1, Response2> = coroutineScope {
    val deferred1 = async { networkRequest1() }
    val deferred2 = async { networkRequest2() }

    val result1 = deferred1.await()
    val result2 = deferred2.await()

    Pair(result1, result2)
}

suspend fun networkRequest1(): Response1 {
    // υλοποίηση του πρώτου αιτήματος
}

suspend fun networkRequest2(): Response2 {
    // υλοποίηση του δεύτερου αιτήματος
}

Έτσι, και τα δύο αιτήματα ξεκινούν παράλληλα και τα αποτελέσματα συνδυάζονται μετά την ολοκλήρωσή τους.