自定义高阶可观察映射

时间:2018-09-19 10:26:58

标签: angular rxjs observable

所以我有一个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

这很有效,因为它将每个项目映射到到目前为止我试图实现的获取数据。

不过,我最终想要将mergeMap合并到自定义对象中,如下所示:

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

代替

[fetchedData, fetchedData, fetchedData]

因此,如果需要的话,我需要在同一个运算符中使用map和mergeMap之类的东西。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以将内部异步结果映射到所需的对象中

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