Как мне сделать рефакторинг общей карты для Single / Observable внутри блока if? - PullRequest
0 голосов
/ 08 июня 2018

Как я могу реорганизовать этот кусок кода?Если я перейду .map() из flatMapSingle, я потеряю id.

Observable.fromArray(1, 2, 3)
          .flatMapSingle(id -> {
              if (id % 2 == 0)
              {
                  return loadObjectSingle(id)
                        .map(object -> Entry(id, object));
              }
              else
              {
                  return loadFakeObjectSingle(id)
                          .map(object -> Entry(id, object));
              }
          })

1 Ответ

0 голосов
/ 09 июня 2018

Просто назначьте сингл, чтобы вы делали карту только один раз.

Observable
  .fromArray(1, 2, 3)
  .flatMapSingle(id -> {
     Single<T> single;
     if (id % 2 == 0) {
        single = loadObjectSingle(id);
     } else {
        single = loadFakeObjectSingle(id);
     }
     return single.map(object -> Entry(id, object));
   });
...