сейчас наверное уже да, но по началу как канал не выглядело)) Просто, если бы возвращал по-порядку то делал бы await в цикле и хватило бы флоу, а если по мере поступления, то канал? Как-то странно, не?
А, надо по мере поступления, да, в глаза долблюсь. А вообще это нормально, или это тоже надо на флоу/каналах делать? Если просто куча параллельных запросов хочется
Народ, а какие вообще гарантии на suspend'ах и try finally?
try { foo() //suspension } finally { bar() }
Есть ли кейсы, когда bar не вызовется?
Должен вызываться всегда, если никто не начудит с низкоуровневыми примитивами и не потеряет Continuation. Ещё есть такой ньюанс, что в bar() корутина может быть уже отменена и может понадобиться withContext(NonCancellable)
Должен вызываться всегда, если никто не начудит с низкоуровневыми примитивами и не потеряет Continuation. Ещё есть такой ньюанс, что в bar() корутина может быть уже отменена и может понадобиться withContext(NonCancellable)
хммммм, а вот этот второй моментик, есть где почитать?
Ну, вопрос философский) Когда начинал, со стороны очень казалось, что вытягиваю. Например, обычный GET для одной картинки - вытягивание? А тут вытягивание списка картинок. Инициатор - пользователь, со стороны все выглядит холодным, это ж не сенсор какой-то.
Так ChannelFlow же. Со сотроны, где пихаете - канал, с другой стороны Flow.
Насколько я понимаю, те же самые, которые на обычный try. Там только проблема в том, что корутины без обвязки сами исключения не прокидывают за скоуп. Надо библиотекчными пользоваться
Насколько я понимаю, те же самые, которые на обычный try. Там только проблема в том, что корутины без обвязки сами исключения не прокидывают за скоуп. Надо библиотекчными пользоваться
Ну меня волнуют только гарантии исполнения finally
да вернуть флоу, например, который будет отдавать их по мере поступления.(или, если без флоу, то хоть массив результатов, отсортированый по очередности результатов, но без хаков типа таймстемпа или айдишников).
Все зависит от применения. Если тип одинаковый то асинки заганяем в лист и ждём
Всем привет. Я использую callbackFlow и опертор buffer(Channel.Factory.UNLIMITED) Как можно пологгировать заполненость канала? Хочу убедиться, что данные в нем не вызовут OOM.