Реактивный (rx java) вопрос о Возможно <List>против Текучего и т. Д. - PullRequest
0 голосов
/ 30 января 2020

Я все еще изучаю некоторые особенности реактивного / rx java, и у меня был быстрый вопрос по случаю использования, с которым я часто сталкиваюсь.

У нас часто есть службы, которые получают записи из БД или другого источника данных и возвращают их другим службам или клиенту через контроллер HTTP. Мой вопрос заключается в следующем: есть ли практическая разница между отображением этих данных как Flowable<DTO> против Maybe<List<DTO>> (или Single<List<DTO>>, когда это уместно). Все данные будут загружены сразу из источника данных, поэтому они будут в списке локально.

Я предполагаю, что, если бы был случай использования, когда вызов БД возвратил большое количество значений, экспонирование их с помощью Flowable могло бы быть лучшим вариантом, чтобы вызывающий мог обрабатывать их в своем собственном темпе? Но если это всего лишь небольшое количество записей, я думаю, что это незначительно. Или, аналогично, есть ли случай, когда возврат Maybe<List<DTO>> был бы предпочтительнее?

Я что-то неправильно понимаю?

Спасибо!

1 Ответ

0 голосов
/ 30 января 2020

Как вы говорите, это действительно зависит от вашего варианта использования, количества DTO с, которое вы обрабатываете, и от того, как они упакованы.

Если у вас есть Flowable<DTO> в наиболее общем случае, тогда вы можете применить противодавление, только приняв то, что вы можете обработать прямо сейчас. Кроме того, вы можете создать цепочки наблюдателей, которые преобразуют результат в список:

Flowable<DTO> source;

// capture all the data:
source.
  toList().
  subscribe( /* Handle a List<DTO> */);
// Some data in a bunch
source.
  buffer(20).
  subscribe( /* Handle a List<DTO>, 20 entries at a time */ );

Важным моментом является то, что Rx Java позволяет вам составлять цепочки наблюдателей в типы результатов, которые вы считаете наиболее удобными. иметь дело с. Модель Rx Java позволяет легко пересекать временные и пространственные границы.

...