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

javascript - RxJs concatMap 获取用户ID,然后用它查询用户的详细示例

无法让 concatMap 对用户 ID 进行第一次查询,然后将该 ID 用于第二次查询。

这是文档如何解释其用法的方式,但似乎不存在证明这种工作的示例。

这在 VSC 中都是红色的。

有人可以帮我理解这一点吗?我相信这可能是因为 TS 2.7+ 没有空返回检查。

0 投票
1 回答
227 浏览

typescript - RxJS FlatMap 和 ConcatMap 中间解决方案?

我有一个使用 rxjs 用 typescript 编写的应用程序,其中我使用 flatMap 返回 5000 个可观察对象的列表,但我不希望同时订阅它们。

我尝试使用 concatMap 但它让我的应用程序非常慢,因为它按顺序一个接一个地处理。

我有兴趣创建一个包含 10 个订阅的池,当一个订阅结束另一个开始时,这将同时保持 10 个订阅处于活动状态。

我想我可以创建一个手动控制,但我有兴趣知道是否有更好的方法,使用其他类型的地图或策略。

0 投票
0 回答
200 浏览

angular - Angular 6 中使用 RxJS 的 HTTP 请求序列

我的目标是通过 POST 请求将信息保存在后端服务器中。我需要在前一个请求完成时一一执行这些请求。但我需要在请求之间添加一些逻辑。这些请求是使用RxJs Observables 发出的。

我会给你一些背景信息。我的应用有 5 个模型:国家、州、城市、地址、个人。

一个人有一个地址,它属于一个城市,属于一个州,属于一个国家。

每个模型都包含其“父”ID 作为外键(例如,City 具有属性“state_id”)。

所有信息都可以通过表格获得。因此,当我提交表单时,我想将此信息保存在我的后端服务器中。

为了做到这一点,我需要检查(通过 GET 请求)国家/州/城市/地址是否已经存在于数据库中,如果存在,我需要将其 ID 绑定到“孩子”,否则我需要 POST然后将其 ID 绑定到“孩子”。

我怎样才能做到这一点?我做了一些研究,并试图做这个管道concatMap()操作员。但我的问题是:我怎么能concat收到这些请求?

这是我到目前为止所拥有的:

我不知道如何正确地做到这一点。我正在寻找的请求序列是:

我怎么能做到这一点?请注意,我的主要问题是有时我需要在一些 GET 请求之间执行一些 POST 请求,而有时我不会。但是,我需要在每种情况下将一些 Observable(带有 Country/State/City... 数据)返回给下一个操作员。

0 投票
1 回答
4585 浏览

angular - Angular 6 + RxJs - concatMap 的错误处理

我仍在学习 RxJs,我正在尝试使用 concatMap() 来不使用嵌套订阅。我希望运行第一个调用,然后延迟一两秒(在第二个请求之前创建数据库记录),然后再运行第二个请求。我还想专门为每个请求添加错误处理,以便我可以单独为它们捕获错误。

到目前为止,我有一些运行请求 1、延迟,然后运行请求 2 的东西。

我想知道的是——

  1. 我可以在每个请求上使用诸如 catchError() 之类的东西吗?
  2. 如果我希望请求 1 在第二个请求运行之前完成,这是正确的吗?

谢谢!

0 投票
0 回答
347 浏览

rx-java - RxJava2 Flowable 的 concatMap 和 concatMapEager with observeOn 有不同的行为

当 concatMapEager 使用 1 并发时应该publisher.observerOn(scheduler).concatMap(mapper, 1)并且具有相同的行为?publisher.observerOn(scheduler).concatMapEager(mapper, 1, 1)我测试concatMap它可能使用不同的线程而不是调度程序observeOn来调用映射器。

例如

这打印

但如果将其更改为concatMap(mapper, 1),则会打印

还应该concatMapRxCachedThreadScheduler吗?或者是故意的。

0 投票
0 回答
23 浏览

android - android RXJava 中的 concatMap 问题

请跟我来,我将在我的代码中讲述我到目前为止所做的事情。我调用了 Observable 方法来获取 9 函数以从 DB 中获取值。现在我需要从数据库中获取额外的数据。为此,我使用了 RXJava 的 concatMap 方法。但我得到以下问题。请在我附加的屏幕截图中检查它。

在此处输入图像描述

0 投票
2 回答
254 浏览

rx-java2 - 中断 concatMap 中的单个 observable

我曾经通过concatMap长时间运行的操作一次处理一个项目流。在某些时候,我需要“中断”这个长时间运行的操作,但仅限于当前项目:

我试图通过保留“内部”流的一次性并在正确的时间处理它来解决这个问题。但这没有用。内部流已被处理,但concatMap从未继续处理第 3 项。测试只是挂起(因为外部 observable 也从未完成/终止/处理)

即使这确实有效,但依靠副作用似乎有点笨拙。实现这一目标的最佳方法是什么?

0 投票
3 回答
832 浏览

angular - RxJS | 如何使用 concatMap 在管道中捕获和失败?

我试图用它concatMap来允许我按顺序运行请求,而不必在视觉上订阅我发送的每个请求。

一切正常,但是当出现错误时,它会继续通过管道运行,这是我不想要的。

如果它失败了,我只想能够取消所有的请求,让它停止运行并显示一些东西。我已经尝试过catchError,但这似乎不起作用/做我想做的事。

举这个例子...

我想重置用户密码,在密码重置后我想登录POST/password/resets端点,然后我想自动登录用户,所以我想发帖,/auth/login然后我想获取用户GET - /user以便我可以使用它在整个应用程序中。如果请求在任何阶段失败。我想停止管道并抛出问题底部显示的一般错误。

例子:

下面的代码片段是我想在错误时运行的东西 -

0 投票
1 回答
46 浏览

parallel-processing - Rxjava2如何让flatMap按调用顺序发射项目?

想象有 Observable A 发射

A.flatMap(a -> f(a))将以不可预知的顺序发出项目,例如:

我怎样才能按如下顺序获得结果?

ConcatMap可以返回我想要的结果,但是它是按顺序处理流的,在耗时方面效果不佳。我需要像 concatMap 这样具有并行处理能力的东西。有什么解决办法吗?谢谢。

0 投票
3 回答
589 浏览

angular - 如何在第二个请求中使用来自 concatMap 的第一个响应

我试图避免对后端请求的嵌套订阅。我需要登录,然后根据登录的响应获取服务令牌,然后根据服务令牌获取加密令牌。

我见过 concatMap 但我不确定如何在第二个请求或第三个请求中使用第一个响应