问题标签 [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.
javascript - 带有 rxjs 的内部订阅数组
我正在尝试改进扁平化并减少我的 Rxjs 代码中的链接。
我的服务getAllItems()的 REST 调用返回以下 Items[]:
我有另一个端点getOwnerInfo(id:number)它提供基于“所有者”ID的信息,我想要组合的信息,所以最终答案应该如下所示:
我当前的实现 .subscribe 一次调用getAllItems,然后在订阅正文中迭代每个订阅getOwnerInfo的元素。
我一直在查看其他扁平化示例,但基本上它们“破坏”了数组,并且他们从未将其重新组合在一起。我需要输出是一个数组。
我尝试使用from()、concatMap()和mergeMap()但似乎我无法正确组合这两个请求。
typescript - switchMap 结合 mergeMap
我有一个 Observable,其中每个新值都应该引发一个 HTTP 请求。在客户端,我只关心最新的响应值;但是,我希望完成每个请求以进行监控/等。目的。
我目前拥有的是这样的:
当我使用switchMap
for 时someMapFunc
,我得到了正确的响应集(只有最新的)。但是,如果请求花费的时间过长,它将被取消。
当我mergeMap
改为使用时,我得到了正确的请求集(每个请求都完成),但我得到了错误的响应集(每一个)。
mergeMap
有没有办法通过响应来获取请求switchMap
?我知道我可以将其编写为自定义运算符,但我想知道是否可以使用现有/标准 rxjs 运算符构建它。总结一下我的想法:
switchMap
切换时不会取消订阅的版本;- 它的一个版本
mergeMap
只从最新的内部 Observable 发出值。
编辑:根据接受的答案,我能够得到以下内容,这很有效:
angular - Angular失败时如何继续mergeMap
当一个失败时,我似乎无法弄清楚如何mergeMap
在 Angular 中继续使用。
我mergeMap
在一个可观察的 inside 上将两个调用串在一起pipe
。两者都完成了所有调用,但第二个合并映射调用之一返回错误,因此没有第二个合并调用被映射。
我对此仍然很陌生,因此将不胜感激。
angular - Angular + RxJS:如何对数组中的每个项目进行并行请求?
我有一组 ID。例如:[1,2,3,4]。
我想进行并行调用并获得forkJoin
数组每个元素的结果。但是下面的代码对我不起作用。
谁能帮助我如何实现这一目标?谢谢