Πώς ανιχνεύει το coroutineScope ότι οι κορουτίνες του έχουν ακυρωθεί;
sobes.tech AI
Απάντηση από AI
coroutineScope στις coroutine του Kotlin ανιχνεύει την ακύρωση των παιδικών coroutine μέσω του μηχανισμού ακύρωσης του πλαισίου coroutine. Αν μια από τις coroutine μέσα στο coroutineScope ακυρωθεί (π.χ., λόγω εξαίρεσης ή ρητής ακύρωσης), τότε ολόκληρο το coroutineScope λαμβάνει το σήμα ακύρωσης.
Αυτό συμβαίνει επειδή όλες οι coroutine μέσα στο coroutineScope κληρονομούν ένα κοινό CoroutineContext, που περιέχει ένα Job. Όταν αυτό το Job ακυρωθεί, όλες οι παιδικές coroutine ακυρώνονται επίσης.
Έτσι, το coroutineScope παρακολουθεί την κατάσταση των παιδικών coroutine μέσω του κοινού πλαισίου και αντιδρά στην ακύρωσή τους, διακόπτοντας την εκτέλεση και ρίχνοντας μια εξαίρεση CancellationException, αν χρειάζεται.
Παράδειγμα:
suspend fun παράδειγμα() = coroutineScope {
val job = launch {
// κάποια εργασία
delay(1000)
}
delay(500)
job.cancel() // ακυρώνουμε την παιδική coroutine
// το coroutineScope θα ανιχνεύσει την ακύρωση και θα διακοπεί
}