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

Всем привет. Есть ли во Flow оператор, чтобы отдавать элементы

"пачками". Условно - есть 100 элементов, делаю из них флоу - подписываюсь и получаю не элементы, а листы, например, по 10 элементов, пока вся последовательность не обработается?

8 ответов

30 просмотров

А каким образом генерируете данные внутри Flow? Если вручную, то просто в билдере эмитьте списки по 10 элементов.

Andrey Akimov
Flow из базы торчит

Если речь об андроидном Room, то там, если не ошибаюсь, весь список отдается за раз. Вклиньтесь между отдающим методом и коллектором оператором transform и попробуйте написать свою логику.

Andrey-Akimov Автор вопроса
Viktor
Если речь об андроидном Room, то там, если не ошиб...

Пока таким образом и экспериментирую, в трансформ прилетают объекты из базы, добавляю их в лист, проверяю размер листа, если 10 - эмичу, проблема в том, что в последней итерации может быть меньше 10 элементов и они соответственно, отправлены не будут, а понять, что это последняя пачка элементов тоже вроде никак

Andrey Akimov
Пока таким образом и экспериментирую, в трансформ ...

А вы перед циклом посчитайте количество итераций делением на 10 и проверяйте. Хотя, скорее всего, есть вариант полаконичнее, но это надо подумать хорошо.

Andrey Akimov
Пока таким образом и экспериментирую, в трансформ ...

И не забудьте в конце всей цепочки трансформаций сменить контекст через flowOn.

Andrey Akimov
зачем?

Потому что трансформации будут совершены на диспетчере, в котором будет коллектор. Контекст автоматически меняется лишь для самого Dao-метода. Можете сами убедиться с помощью println(Thread.currentThread().name) внутри блока transform.

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта