自定义高阶可观察映射



所以我有一个可观察量,它发出一个项目数组。

我想将每个项目映射到自定义对象,但其中一个对象字段再次通过可观察量异步获取。

这是我到目前为止所拥有的:

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 这样的东西在同一个运算符中,如果这有意义的话。

谢谢

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

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

最新更新