Junior — Middle
როგორ განვახორციელოთ SupervisorJob-ის მსგავსი ფუნქციონალობა მისი დანერგვის გარეშე?
sobes.tech AI
პასუხი AI-სგან
Kotlin Coroutines-ში SupervisorJob საშუალებას აძლევს შვილობილი კორუტინები მუშაობდნენ დამოუკიდებლად: ერთში შეცდომა სხვა არ გაუქმდება. მსგავსი ქცევის განხორციელებისთვის SupervisorJob-ის გარეშე, შეგიძლიათ ხელით მართოთ კორუტინების ციკლი და გამოავლინოთ გამონაკლისები ისე, რომ ისინი არ გამოიწვიოს მშობელი კორუტინის გაუქმება.
მაგალითი:
val parentJob = Job()
fun launchIndependentCoroutine(scope: CoroutineScope, block: suspend () -> Unit) {
scope.launch(parentJob) {
try {
block()
} catch (e: Throwable) {
// შეცდომის დამუშავება, რათა არ გაუქმოს parentJob
println("შვილობილი კორუტინაში შეცდომა: ${e.message}")
}
}
}
// გამოყენება
launchIndependentCoroutine(CoroutineScope(Dispatchers.Default)) {
// კორუტინის კოდი
}
ამ გზით, შვილობილი კორუტინების შეცდომები არ გაუქმებს მშობელ Job-ს, რაც იმიტირებს SupervisorJob-ის ქცევას.