CoroutineScope с SupervisorJob против SupervisorScopeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 CoroutineScope с SupervisorJob против SupervisorScope

Сообщение Anonymous »

Недавно я подробно изучал сопрограммы, насколько я понимаю, SupervisorJob() дает нам возможность не отменять все дочерние программы, если один из дочерних элементов сопрограммы отменен по какой-либо причине.Говорят, что сопрограммы, запущенные с помощью coroutineScope, отменяют всех дочерних программ в случае сбоя одного из них, но те, которые запущены с SupervisorScope, отменяют только дочерний элемент, в котором произошел сбой
Интересно, могу ли я изменить поведение CoroutineScope, добавив к нему SupervisorJob в качестве CoroutineContext, но я не смог получить ожидаемое поведение, чего я не получаю
Ожидаемое поведение — результаты getData1() и getData3() печатаются*
Фактическое: — getData2 () отменяет все сопрограммы
fun main() = runBlocking {

val exceptionHandler = CoroutineExceptionHandler { coroutineContext, throwable ->
println(throwable)
}

val customScope = CoroutineScope(SupervisorJob() + exceptionHandler)

customScope.launch {
launch {
getData1().also { println(it) }
}
launch {
getData2().also { println(it) }
}
launch {
getData3().also { println(it) }
}
}.join()

}

private suspend fun getData1(): String? {
delay(1000)
return "data 1"
}

private suspend fun getData2(): String? {
delay(300)
throw RuntimeException("While getting Data 2 exception happened")
}

private suspend fun getData3(): String? {
delay(800)
return "data 3"
}


Подробнее здесь: https://stackoverflow.com/questions/749 ... visorscope
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Разница CoroutineScope(Dispatchers.IO + Job()) и CoroutineScope(Dispatcher.IO) + Job()
    Anonymous » » в форуме Android
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Разница CoroutineScope(Dispatchers.IO + Job()) и CoroutineScope(Dispatcher.IO) + Job()
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Разница между CoroutineScope(Dispatchers.IO + Job()) и CoroutineScope(Dispatcher.IO) + Job()
    Anonymous » » в форуме Android
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Разница между CoroutineScope и coroutineScope в Котлине
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Kotlin Coroutines с SupervisorJob отменяет дочерние элементы
    Гость » » в форуме Android
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»