问题标签 [concatmap]

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 投票
1 回答
101 浏览

angular - RxJS 发出多个 AJAX 请求,然后通过另一个 AJAX 请求获取一个新列表

目标是发出多个保存请求,然后使用另一个 ajax 请求获取新列表。我有以下似乎是我想要的,但想知道是否有更好的方法

保存的结果并不重要。保存后获得新结果是我需要使用的结果。我使用了 takeLast(1) 因为如果我不这样做,列表中的每个项目都会有一个获取请求。在上面的示例中,我将有 3 个获取请求,并且我只想在所有保存完成后获取列表。

0 投票
1 回答
64 浏览

angular - 有条件的可观察链

所以我有 3 个 observables:updateCustomUserData$、updateEmail$、updatePassword$。和profileEditForm。如果更改了适当的表单字段,我需要更新个人资料数据;我认为它应该是这样的:

但它不起作用。如果自定义数据未更改且密码或电子邮件已更改 - updateEmail 和 updatePassword 未执行。有人可以帮忙吗?PS对不起我的英语:)

0 投票
0 回答
42 浏览

spring-webflux - Flux.concatMap 在返回结果之前进入下一个事件

我有一个 Flux 测试用例对象,对于每个对象,我需要调用一个外部服务,一旦收到服务响应,在接下来的操作中,它会检查响应是否有效。但是对于一些随机的对象,在收到来自外部服务的响应之前,Flux 正在释放信号。

预期结果:1)Ref Id:10002 TestCase:TESTCASE_1。2) 在调用 Ref Id: 10002 TestCase : TESTCASE_1 的服务之前。3)命中后:Resp生成;参考 ID:10002 测试用例:TESTCASE_1。4)Ref Id: 10002 TestCase : TESTCASE_1 匹配为真。

1)参考 ID:10002 测试用例:TESTCASE_2。2) 在为 Ref Id: 10002 TestCase : TESTCASE_2 调用服务之前。3)命中后:Resp生成;参考 ID:10002 测试用例:TESTCASE_2。4)Ref Id: 10002 TestCase : TESTCASE_2 匹配为真。

1)参考 ID:10002 测试用例:TESTCASE_3。2) 在为 Ref Id: 10002 TestCase : TESTCASE_3 调用服务之前。3)命中后:Resp生成;参考 ID:10002 测试用例:TESTCASE_3。4)Ref Id: 10002 TestCase : TESTCASE_3 匹配为真。

生成的输出:

1)参考 ID:10002 测试用例:TESTCASE_1。2) 在调用 Ref Id: 10002 TestCase : TESTCASE_1 的服务之前。3)命中后:Resp生成;参考 ID:10002 测试用例:TESTCASE_1。4)Ref Id: 10002 TestCase : TESTCASE_1 匹配为真。

1)参考 ID:10002 测试用例:TESTCASE_2。2) 在为 Ref Id: 10002 TestCase : TESTCASE_2 调用服务之前。

1)参考 ID:10002 测试用例:TESTCASE_3。2) 在为 Ref Id: 10002 TestCase : TESTCASE_3 调用服务之前。3)命中后:Resp生成;参考 ID:10002 测试用例:TESTCASE_3。4)Ref Id: 10002 TestCase : TESTCASE_3 匹配为真。

0 投票
1 回答
293 浏览

javascript - RXJS - 嵌套 concapMap 是否等同于顺序 concatMap?

使用 RXJS 时,我问自己嵌套的 concatMap 是否等同于顺序的。考虑以下示例:

result这将导致result3. 为了避免嵌套,我想写如下:

这也将导致result存在result3。即使在细节层面上可能存在差异,我是否可以假设连接 observable 的两种方法都被认为是等效的(例如,对于失败)?

任何帮助表示赞赏...

0 投票
1 回答
86 浏览

angular - 如何在 Angular 中使用 concatMap 避免嵌套订阅

我用这段代码得到了一系列产品

但是我现在需要根据它的属性来计算这个项目的小时数:

  • ID
  • fechaComiezoTrabajos
  • fechaFinPlanificacion

也就是说,我需要这样的东西

连接图

但是我得到一个错误,因为 concatMap 返回一个 Observable<Horas[]> 并且 proyecto$ 是一个 Observable

如果我试试这个

我在两个变量中都出现错误

如果我试试这个

我在 his.horas$ 中一无所获,实际上 http.get 并没有执行

如何将 concatMap 返回的值分配给另一个可观察变量?

谢谢

0 投票
2 回答
523 浏览

javascript - 在 rxJs 中使用 flatMap 与 concatMap 进行斗争

我正在努力理解rxJsflatMapconcatMaprxJs 之间的区别。

我能理解的最明确的答案是这里的区别-concatmap-and-flatmap

所以我自己去尝试了一些东西。

我在这里用过那个游乐场的例子

问题

1) 据我了解,flatMap 的使用应该混合输出,以便控制台日志类似于(1、3、2、4、5)。我已经尝试了 30 多次并且总是在同一行(1、2、3、4、5)

我做错了什么或有什么不明白的错误?

2) 如果打开createObs2()并且createObs3()您删除注释并包含具有多个发出事件的代码,那么事情就会变得混乱。即使您更改为 concatMap ,它也会使事情变得混乱,结果也很复杂。我期望只出现一次的多个数字多次出现。结果可能是 (1, 2, 33, 3, 2, 22, 3, 33, 4, 5, 4, 3, 4, 5) 为什么会这样?

我如何在操场上测试这个例子。我只从最后一个 console.log("hello") 中删除了 1 个字母。只有一个更改,例如 console.log("heloo") 然后被观察并再次编译项目并在控制台中打印输出。

编辑:我去 flatMap 和 concatMap 的原因是使用 http 库找到一个替代嵌套订阅的角度。

0 投票
1 回答
53 浏览

rxjs - 如何使 concatMap 嵌套

我需要为数组中的每个原始日期获取一系列数据

大批

我需要按顺序获取它们,所以我使用 concatMap 来检查我的可观察日期,当我获得第一组值时,一切正常

我有我的 this.gastoRealizado 数组

胃口大开

但我需要对后端进行 3 次以上调用以获得总共 4 个数组,然后提供一个图表,我不知道如何以这个既定顺序添加更多调用

请问有什么想法吗?

谢谢

0 投票
2 回答
102 浏览

angular - 如何在 Angular RxJS 中正确链接 concatMaps

我想知道以上是否是在 Angular RxJS 中链接 concatMaps 的正确方法。其他两个调用依赖于正在检索的“非营利组织”,以便可以返回其对象。评级和类似的非营利组织可以同时检索,所以我想有一些方法可以做到这一点,而无需将这些 concatMaps 相互嵌套。

0 投票
0 回答
27 浏览

angular - Angular concatMap 未调用下一个 API

我正在尝试进行连续的 http 调用,但getGroups没有调用下一个函数(即)。

这些是我的函数签名:

我检查了getTokenForGroups被调用,但我的第二个函数不是。

0 投票
1 回答
86 浏览

angular - BehaviorSubject 和 concatMap 的副作用

这是我第一次尝试 BehaviorSubject、异步管道和 concatMap,所以我在更新 DOM 中的数据时遇到了一些问题。

我有:

接着

这个逻辑就像购物车逻辑。我将产品添加到其中一个配置文件,因此为了避免再次调用 api (getUserProfiles),我修改了 profile$ 流并添加了我想要的属性(在本例中为 canEdit),但是当我从购物车中删除产品时出现问题并从 getUserProfiles() 恢复数据我知道,当我将 concatMap 与 profile$ 一起使用时,即使我没有调用该函数,我也会对 addProduct() 产生副作用,我的问题是......

为什么它继续执行

使用我过去作为参数传递的旧 profileId,即使我没有调用 addProduct() 函数,如何避免这种情况?