Код: Выделить всё
class Repository {
var job: Job? = null
fun getAll() {
job = CoroutineScope(Dispatchers.IO).launch {
try {
delay(3000)
println("getAll oke")
} catch (e: Exception) {
println("CancellationException")
}
}
}
fun cancel() {
job?.cancel()
println("cancel")
}
}
fun main() {
runBlocking {
val api = Repository()
launch {
api.getAll()
}
delay(1000)
api.cancel()
delay(5000)
println("END")
}
}
Код: Выделить всё
cancel
CancellationException
END
Код: Выделить всё
cancel
getAll oke
END
Но Thread.sleep() этого не делает. Таким образом, даже несмотря на то, что был вызван cancel(). операторы в сопрограмме все равно будут выполняться.
Мой вопрос. Если функция getAll() выполняет вызов API с использованием модификации, номер... будет ли он отменен при вызове отмены?
Подробнее здесь: https://stackoverflow.com/questions/792 ... -coroutine
Мобильная версия