Angular 自定义高阶可观测映射

Angular 自定义高阶可观测映射,angular,rxjs,observable,Angular,Rxjs,Observable,所以我有一个可观测的物体,它发出一系列的物体 我想将每个项映射到一个自定义对象,但其中一个对象字段还是通过可观察对象异步获取的 这就是我到目前为止所做的: const resultingObs = arrayObs .flatMap(x => x); // map array to a stream of items .mergeMap(item => asyncFetch(item.id)); // get async data from a

所以我有一个可观测的物体,它发出一系列的物体

我想将每个项映射到一个自定义对象,但其中一个对象字段还是通过可观察对象异步获取的

这就是我到目前为止所做的:

    const resultingObs = arrayObs
        .flatMap(x => x); // map array to a stream of items
        .mergeMap(item => asyncFetch(item.id)); // get async data from another stream
这很有效,因为它将每个项目映射到获取的数据,这是我迄今为止试图实现的

不过,我希望最终合并到一个自定义对象,如下所示:

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

而不是

[fetchedData,fetchedData,fetchedData]

因此,如果有意义的话,我需要在同一个操作符中使用类似map和mergeMap的东西


谢谢

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

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

是的,我意识到就在我收到你的回答之前。。。我真傻。将接受,谢谢
flatMap
mergeMap
是同一件事,后者只是前者的新名称。