问题标签 [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 投票
0 回答
30 浏览

rxjs - 我们如何在不丢失顺序的情况下展平 observable (api) 数组。我尝试使用 ConcatMap 但没有用

我们如何在不丢失顺序的情况下展平 observable (API) 数组?我尝试使用 ConcatMap 但没有工作,因为只收到一个响应,因为我们从未从第一个响应中获得 COMPLETE 状态,因此它永远不会为第二个项目移动并继续等待。使用 MergeMap,不维护顺序

0 投票
1 回答
87 浏览

angular - 如何在角度 7 的 concatMap/switchMap 中使用检查条件

我正在尝试下载 pdf 表单 API 响应。API-1 将返回文件名,并将文件名作为 API 的输入 - 2,我将下载 pdf。它适用于阳性病例。如果没有从 API - 1 返回的文件名,我不应该调用 API-2,而是必须告诉用户在 popupDialog 中不存在文件。

0 投票
1 回答
28 浏览

angular - Angular 12 ConcatMap 我该怎么做?

我想连接 tow api 调用。我如何在此代码上使用 ConcatMap ?

0 投票
1 回答
74 浏览

android - RxJava 可流动的> 对每个项目进行操作,然后对结果列表进行操作

我有一个Flowable<List<Item>>我想要的:

  1. 对每个项目进行操作
  2. 之后,我想对整个结果列表进行操作。

这现在不起作用,因为它看起来像是进入了一个无限循环::

0 投票
0 回答
31 浏览

rxjs - 用 ConcatMap 替换 SetTimeout

我想用 Concat MAp 替换 setTimeout,这个例子我该怎么做?

0 投票
1 回答
72 浏览

javascript - rxjs 链可以并行触发,但内部逻辑应该是同步的(.next 和 concat)

在我的案例中,字段可以最终确定(与字段相关的操作已执行)。完成后,我需要更新 2 个列表:

  • alreadyExecutedFields: string[] --> 普通数组
  • remainingFieldsToExecute: BehaviorSubject<string[]> --> 行为主体,因为 .next 需要触发其他逻辑。这个逻辑可以并行触发,但我想防止这种情况发生,因为这个逻辑中有一个拼接可能会表现得不正确。(拼接一个索引,在平行链中被移除。)

因此,当需要完成某个字段时,我会调用:

finalize$ 链看起来像这样:

但是由于某种原因,当 2 个 finalize$.next 调用紧接着发生时, concatMap 不会等待前一个的承诺。此外,当我尝试在 END 日志和解析周围设置超时时,它不会等待先前的解析。

在我的情况下起作用的不是使用 concatMap,而是使用带有标志的 setInterval,它锁定了正在更新列表的代码部分。

但是如何以更好的方式做到这一点呢?或者以正确的方式使用或不使用 concat 管道。

0 投票
3 回答
41 浏览

angular - RxJs:多个请求后跟一个通过 concatMap 的请求不起作用

我进行了一个返回数组的 api 调用。我需要遍历这个数组并为每个项目执行一个新请求。以下代码工作正常:

但是,当所有项目都完成后,我想提出另一个请求。只有一个。

但是当我使用以下代码时,当 from 数组中的第一项完成时,该过程停止。

我也有一些稍微修改过的代码在它工作的地方,但是最后的请求是为数组中的每个项目执行的,它只需要执行一次。

有人知道如何解决这个问题吗?提前致谢!!

0 投票
1 回答
52 浏览

angular - concatMap 没有第二次订阅

我正在实现 concatMap 运算符。甚至在此之前,我尝试一个接一个地进行两个订阅,并且成功了。第一次订阅是针对表单的输入字段进行的,第二次订阅是针对 http 请求的。下面是代码:

每次更新输入字段时,上面的代码片段都会进行 http 调用。我通过添加 concatMap 对 ngAfterViewInit 进行了如下修改:

现在,请求没有按预期发出。当输入改变时,第一次请求只进行一次。永远不会为更新的输入字段发出第二个请求。我在这里做错了什么?

0 投票
0 回答
60 浏览

angular - 为什么我的 concatMap 没有通过所有数组项?

我是 RXJS 的新手。我需要呈现具有特定顺序的表格。我已阅读并检查运算符 concatMap 是否执行了一个过程,并且在前一个完成之前不会开始下一个。

考虑到这一点,我创建了这个实现。

我创建了这个实现:

这可以正常工作,但仅适用于startingPositions 数组中的第一个位置。

我需要这个来通过startingPositions中的所有项目。

我看到的所有文档和示例都与我正在做的事情相似。

我对自己做错了什么感到有些困惑。

我不知道这是否对这种情况有用,但这是 getFilteredData 方法:

0 投票
0 回答
25 浏览

angular - concatMap 用微调器完成(角度)

知道我在这里做错了什么。我有一个角度微调器,显示有 http 请求,当他们完成时微调器被隐藏

我在方法中使用 concatMap 检查是否在本地存储中找到数据,如果找到则从那里获取它,如果没有则通过 http 获取它(获取后我将其添加到本地存储)该方法如下所示:

微调器拦截器是这样的:

我在这里做错了什么?不调用 finalize 并且不隐藏微调器。似乎可观察的永远不会结束......我在第一个 concatMap 中有另一个 concatMap,这是导致问题的原因吗?