Пользовательское наблюдаемое отображение более высокого порядка - PullRequest
0 голосов
/ 19 сентября 2018

Итак, у меня есть Observable, который испускает массив элементов.

Я хочу сопоставить каждый из элементов с пользовательским объектом, но одно из полей объекта снова выбирается асинхронно через Observables.

Это то, что я имею до сих пор:

    const resultingObs = arrayObs
        .flatMap(x => x); // map array to a stream of items
        .mergeMap(item => asyncFetch(item.id)); // get async data from another stream

Это работает хорошо, так как сопоставляет каждый элемент с извлеченными данными, чего я пытался достичь.

Однако я хотел бы закончить слияниемMap с пользовательским объектом, что-то вроде этого:

[{item: item, fetchedData: fetchedData}, {item: item, fetchedData: fetchedData}]

вместо

[fetchedData, fetchedData, fetchedData]

Поэтому мне нужно что-то вроде map и mergeMap в одном и том же операторе, если это имеет смысл.

Спасибо

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете просто отобразить внутренний асинхронный результат в нужный объект:

.mergeMap(item => asyncFetch(item.id)
  .map(fetchedData => ({
    fetchedData,
    item
  })
);
...