Реактивные потоки с реактивными побочными эффектами - PullRequest
0 голосов
/ 17 октября 2018

Я думаю, что это будет сделано аналогично с большинством реактивных реализаций, поэтому я не указываю здесь какую-либо конкретную библиотеку и язык.

Как правильно реагировать на потоки с побочными эффектами (не уверен, какова правильная терминологияздесь)?

Итак, допустим, у нас есть поток Player с.Мы хотим преобразовать это в поток всего id с.Но в дополнение к этому, мы хотим сделать некоторую дополнительную реактивную обработку, основанную на идентификаторах.

Вот как это можно сделать не так элегантно, но каков идиоматический способ добиться этого:

Observable<Player> playerStream = getPlayerStream();
return playerStream
      .map(p -> p.id)
      .flatmap(id -> {
           Observable<Result> weDontCare = process(id);
           // Now the hacky part
           return weDontCare.map(__ -> id);
      })

Это нормально?Кажется, не так элегантно.

1 Ответ

0 голосов
/ 17 октября 2018
Observable<Player> playerStream = getPlayerStream();
    return playerStream
          .map(p -> p.id)
          .doOnEach(id -> { //side effect with id
            Observable<Result> weDontCare = process(id);
            weDontCare.map(__ -> id);
          })
...