Size: a a a

Kotlin Community

2020 June 17

BV

Boris Vanin in Kotlin Community
есть какой-то простой способ запустить тонну корутин параллельно и когда получил первый резульатат остальные отменить?
источник
2020 June 18

LS

Lev Shagalov in Kotlin Community
fun asd = coroutineScope {}
то же что и
fun CoroutineScope.asd  {}
?
источник

LS

Lev Shagalov in Kotlin Community
Boris Vanin
есть какой-то простой способ запустить тонну корутин параллельно и когда получил первый резульатат остальные отменить?
Пусть корутины бросят в канал?
источник

BV

Boris Vanin in Kotlin Community
Lev Shagalov
Пусть корутины бросят в канал?
пусть 😁
источник

LS

Lev Shagalov in Kotlin Community
Ну... как только получил сообщение в канале - грохаешь корутины
источник

LS

Lev Shagalov in Kotlin Community
Можно вернуть результат эксепшеном ))) И отловить его)
источник

BV

Boris Vanin in Kotlin Community
Lev Shagalov
Ну... как только получил сообщение в канале - грохаешь корутины
эта логика понятна, я спрашиваю про какой-то шорткат
источник

LS

Lev Shagalov in Kotlin Community
Еще в скоупе кажется был хук на успешное завершение, onComplete чтоли...
Про шорткат не знаю
источник

AM

Andrew Mikhaylov in Kotlin Community
Lev Shagalov
fun asd = coroutineScope {}
то же что и
fun CoroutineScope.asd  {}
?
ЯННП. В первом случае вы создаёте скоуп, выполняете в нём пустую лямбду, и кладёте в asd джобу, которая по идее сразу должна быть завершённой, во втором предположительно определяете экстеншн на CoroutineScope (правда с не совсем правильным синтаксисом).
источник

RI

Ruslan Ibragimov in Kotlin Community
Lev Shagalov
fun asd = coroutineScope {}
то же что и
fun CoroutineScope.asd  {}
?
Нет, в одном случае создаётся новый скоуп, в другом просто декларируется что нужен скоуп чтобы запустить
источник

BV

Boris Vanin in Kotlin Community
Lev Shagalov
Можно вернуть результат эксепшеном ))) И отловить его)
вот это реальный шорткат, только немного зашкварный
источник

LS

Lev Shagalov in Kotlin Community
Ruslan Ibragimov
Нет, в одном случае создаётся новый скоуп, в другом просто декларируется что нужен скоуп чтобы запустить
В первом случае получается получается скоуп-прослойка?
Если я верно понимаю, то при не супервизор родителе  это ничего особо не дает?
источник

LS

Lev Shagalov in Kotlin Community
Boris Vanin
вот это реальный шорткат, только немного зашкварный
Напишите слёзные извинения в коментах.
источник

LS

Lev Shagalov in Kotlin Community
Тогда я не понял, для чего coroutineScope есть
источник

AM

Andrew Mikhaylov in Kotlin Community
Lev Shagalov
Тогда я не понял, для чего coroutineScope есть
Для того, чтобы по месту создать под-скоуп, выполнить в нём что-либо параллельно, и синхронизироваться при выходе.
источник

LS

Lev Shagalov in Kotlin Community
А зачем этот подскоуп?
источник

LS

Lev Shagalov in Kotlin Community
Это чтобы для всех запущенных корутин по середине метода join не писать?
источник

AM

Andrew Mikhaylov in Kotlin Community
suspend fun doStuff(param: String) {
   println("doing stuff")
   val a = someAsyncWork(param)
   coroutineScope {
       runOneAction(a)
       runAnotherInParallel(a)
   }
   runAtTheEnd()
}
источник

AM

Andrew Mikhaylov in Kotlin Community
Если навернуть трай-кэтч, можно ещё и заваливание текущего скоупа запущенной подзадачей избежать при надобности.
источник

RI

Ruslan Ibragimov in Kotlin Community
источник