所以我有一个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之类的东西。
谢谢
答案 0 :(得分:1)
您可以将内部异步结果映射到所需的对象中
.mergeMap(item => asyncFetch(item.id)
.map(fetchedData => ({
fetchedData,
item
})
);