169 похожих чатов

Подскажите по Flow пожалуйста Вот у меня есть функция fun getFlow()

= flow { //do simething}

Далее где нибудь я начинают следить за flow:
getFlow().collect{

}

Так вот могу я как-то узнать что flow больше не будет имитить? Грубо говоря что функция getFlow закончила свое выполнение?

13 ответов

14 просмотров

Узнать где?

Anton-Potekhin Автор вопроса
Alexander Nozik
Узнать где?

уже нашел 😉 onCompletion

вообще рекомендуется делать не collect, а onEach{}.launchIn(scope). В этом случае возвращается Job и когда он закончен, тогда и прекратилось

Anton-Potekhin Автор вопроса
Alexander Nozik
вообще рекомендуется делать не collect, а onEach{...

а что так можно было ? 😉 Вот действительно не знал. Спасибо

Anton Potekhin
а что так можно было ? 😉 Вот действительно не знал...

Я тоже не так давно начал так делать, спасибо @why_oleg. Это реально удобнее.

onEach

Anton-Potekhin Автор вопроса
Alexander Nozik
onEach

точно 😉

Alexander Nozik
вообще рекомендуется делать не collect, а onEach{...

всё же это разные вещи для разных юзкейсов) в данном случае, если надо что-то сделать сразу после collect в том скоупе, где collect был запущен, то финт с launchIn не так полезен если же надо знать, что collect закончился извне - то другое дело

Oleg Yukhnevich
всё же это разные вещи для разных юзкейсов) в данн...

Да, немного разное. Но обычно коллектор в отдельном ланче запускается.

Alexander Nozik
Да, немного разное. Но обычно коллектор в отдельно...

наверно, даже не знаю, it depends всё же * collect - после него операция выполниться только если не будет ошибки, если надо и когда ошибку - нужен try * onCompletion - вызовется и при завершении с ошибкой и без и передаст ошибку в lambda, и потом, когда вызовется collect будет та же схема что сверху * launchIn - запустит в другом scope - и там уже в другом месте можно проверить, завершился с ошибкой или нет и доставать ошибку уже не так прям приятно) вот

Oleg Yukhnevich
наверно, даже не знаю, it depends всё же * collect...

Верно кроме последнего. Если есть Job, то достать ошибку не проблема.

Alexander Nozik
Верно кроме последнего. Если есть Job, то достать ...

там неудобно отделять, отменили или вылетела ошибка

Alexander Nozik
Верно кроме последнего. Если есть Job, то достать ...

тем более, единственный способ получить ошибку это либо обернуть в try ensureActive и словить ошибку, либо использовать Job.getCancellationException() - который помечен как internal

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта