问题标签 [mergemap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
33 浏览

javascript - 带有 rxjs 的内部订阅数组

我正在尝试改进扁平化并减少我的 Rxjs 代码中的链接。

我的服务getAllItems()的 REST 调用返回以下 Items[]:

我有另一个端点getOwnerInfo(id:number)它提供基于“所有者”ID的信息,我想要组合的信息,所以最终答案应该如下所示:

我当前的实现 .subscribe 一次调用getAllItems,然后在订阅正文中迭代每个订阅getOwnerInfo的元素。

我一直在查看其他扁平化示例,但基本上它们“破坏”了数组,并且他们从未将其重新组合在一起。我需要输出是一个数组。

我尝试使用from()concatMap()mergeMap()但似乎我无法正确组合这两个请求。

0 投票
2 回答
66 浏览

typescript - switchMap 结合 mergeMap

我有一个 Observable,其中每个新值都应该引发一个 HTTP 请求。在客户端,我只关心最新的响应值;但是,我希望完成每个请求以进行监控/等。目的。

我目前拥有的是这样的:

当我使用switchMapfor 时someMapFunc,我得到了正确的响应集(只有最新的)。但是,如果请求花费的时间过长,它将被取消。

当我mergeMap改为使用时,我得到了正确的请求集(每个请求都完成),但我得到了错误的响应集(每一个)。

上面代码的大理石图

mergeMap有没有办法通过响应来获取请求switchMap我知道我可以将其编写为自定义运算符,但我想知道是否可以使用现有/标准 rxjs 运算符构建它。总结一下我的想法:

  • switchMap切换时不会取消订阅的版本;
  • 它的一个版本mergeMap只从最新的内部 Observable 发出值。

编辑:根据接受的答案,我能够得到以下内容,这很有效:

0 投票
1 回答
35 浏览

angular - Angular失败时如何继续mergeMap

当一个失败时,我似乎无法弄清楚如何mergeMap在 Angular 中继续使用。

mergeMap在一个可观察的 inside 上将两个调用串在一起pipe。两者都完成了所有调用,但第二个合并映射调用之一返回错误,因此没有第二个合并调用被映射。

我对此仍然很陌生,因此将不胜感激。

0 投票
2 回答
40 浏览

angular - Angular + RxJS:如何对数组中的每个项目进行并行请求?

我有一组 ID。例如:[1,2,3,4]。

我想进行并行调用并获得forkJoin数组每个元素的结果。但是下面的代码对我不起作用。

谁能帮助我如何实现这一目标?谢谢