Size: a a a

Kotlin Community

2020 June 18

АО

Алексей Овсянников... in Kotlin Community
Lev Shagalov
Звучит так, что не надо запускать корутины из корутин.
Скорее как разумное ограничение распараллеливания всего и всея
источник

АО

Алексей Овсянников... in Kotlin Community
Корутины в котлине сами по себе про написание последовательного кода, который МОЖЕТ быть исполнен параллельно
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
Корутины в котлине сами по себе про написание последовательного кода, который МОЖЕТ быть исполнен параллельно
Корутины вообще не про параллельность. У народа и так каша в голове, не надо туда добавлять
источник

LS

Lev Shagalov in Kotlin Community
Так... стоп) Я спросил "А что если я в suspend хочу таки launch запустить?" Я понимаю когда мне надо параллелить, когда не надо, это вообще отношения к корутинам не всегда имеет.
А что если я в suspend хочу таки launch запустить?
источник

AN

Alexander Nozik in Kotlin Community
Запускать корутины из корутин абсолютно нормально. Не рекомендуется делать launc{}.join()
источник

LS

Lev Shagalov in Kotlin Community
Alexander Nozik
Запускать корутины из корутин абсолютно нормально. Не рекомендуется делать launc{}.join()
Почему? Это не coroutineScope() ?
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Так... стоп) Я спросил "А что если я в suspend хочу таки launch запустить?" Я понимаю когда мне надо параллелить, когда не надо, это вообще отношения к корутинам не всегда имеет.
А что если я в suspend хочу таки launch запустить?
coroutineScope{launch[}}
источник

АО

Алексей Овсянников... in Kotlin Community
Lev Shagalov
Так... стоп) Я спросил "А что если я в suspend хочу таки launch запустить?" Я понимаю когда мне надо параллелить, когда не надо, это вообще отношения к корутинам не всегда имеет.
А что если я в suspend хочу таки launch запустить?
coroutineScope { launch { … } }
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Почему? Это не coroutineScope() ?
Потому что ты ее запускаешь и тут же джойнишь, не понятно зачем
источник

LS

Lev Shagalov in Kotlin Community
А ну да... зачем запускать тогда... не понятно зачем нужна
источник

AN

Alexander Nozik in Kotlin Community
Запуск корутин билдера - это запуск асинхронной задачи. Если ты ее запускаешь и тут же джойнаешь, то ассинхронно ничего не запусаеется
источник

LS

Lev Shagalov in Kotlin Community
Alexander Nozik
coroutineScope{launch[}}
Я верно понимаю, что код обычно в launch не пишут, а пишут вызовы функций с ресивером?
источник

AN

Alexander Nozik in Kotlin Community
Это просто довольно типичная ошибка людей, пришедших с тредов. которые мыслят блокировками. Создавать coroutineScope на один ланч - это тоже скорее всего ошибка проектирования просто потому, что этот ланч то же не есть асинхронная задача
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Я верно понимаю, что код обычно в launch не пишут, а пишут вызовы функций с ресивером?
по соглашению сигнатура CoroutineScope.doSomethingAsync(): Deferred - это fire-and-forget запуск асинхронной таски
источник

AN

Alexander Nozik in Kotlin Community
Если тебе надо, чтобы код выполнился последовательно в таймлайне текущей корутины, то скоуп не нужен. Если ты хочешь делать ветвления - нужен скоуп в том или ином виде. Можно передать, можно на месте создать
источник

AN

Alexander Nozik in Kotlin Community
Вообще, меня немного удивляет, что понятие "истории" не упоминается контексте корутин. Это очень удобная, как тут недавно говорил @neuradev , "ментальная модель".
источник

DV

Dmitriy Volkovskiy in Kotlin Community
подскажите, как оформить func2 https://pl.kotl.in/LGbDw6Kit
источник

AL

Alexander Levin in Kotlin Community
Dmitriy Volkovskiy
подскажите, как оформить func2 https://pl.kotl.in/LGbDw6Kit
Смотря что нужно в итоге. Если нужна саспенд лямбда, то например так - val func2 = suspend { longOperation() }
источник

DV

Dmitriy Volkovskiy in Kotlin Community
Alexander Levin
Смотря что нужно в итоге. Если нужна саспенд лямбда, то например так - val func2 = suspend { longOperation() }
спасибо . работает ) при чем я делал через метод, не захотело работать. а внутри suspend функции всё завелось
источник

DV

Dmitriy Volkovskiy in Kotlin Community
наконец увидел, для чего нужна конструкция
 suspend {}
источник