【问题标题】:Custom higher order observable mapping自定义高阶可观察映射
【发布时间】:2018-09-19 10:26:57
【问题描述】:

所以我有一个 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 的东西。

谢谢

【问题讨论】:

  • flatMapmergeMap 是同一个东西,后者只是前者的新名称。

标签: angular rxjs observable


【解决方案1】:

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

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

【讨论】:

  • 是的,在我收到您的回答之前,我意识到......我愚蠢。会接受,谢谢
猜你喜欢
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
相关资源
最近更新 更多