问题标签 [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.
javascript - RxJs concatMap 获取用户ID,然后用它查询用户的详细示例
无法让 concatMap 对用户 ID 进行第一次查询,然后将该 ID 用于第二次查询。
这是文档如何解释其用法的方式,但似乎不存在证明这种工作的示例。
这在 VSC 中都是红色的。
有人可以帮我理解这一点吗?我相信这可能是因为 TS 2.7+ 没有空返回检查。
typescript - RxJS FlatMap 和 ConcatMap 中间解决方案?
我有一个使用 rxjs 用 typescript 编写的应用程序,其中我使用 flatMap 返回 5000 个可观察对象的列表,但我不希望同时订阅它们。
我尝试使用 concatMap 但它让我的应用程序非常慢,因为它按顺序一个接一个地处理。
我有兴趣创建一个包含 10 个订阅的池,当一个订阅结束另一个开始时,这将同时保持 10 个订阅处于活动状态。
我想我可以创建一个手动控制,但我有兴趣知道是否有更好的方法,使用其他类型的地图或策略。
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... 数据)返回给下一个操作员。
angular - Angular 6 + RxJs - concatMap 的错误处理
我仍在学习 RxJs,我正在尝试使用 concatMap() 来不使用嵌套订阅。我希望运行第一个调用,然后延迟一两秒(在第二个请求之前创建数据库记录),然后再运行第二个请求。我还想专门为每个请求添加错误处理,以便我可以单独为它们捕获错误。
到目前为止,我有一些运行请求 1、延迟,然后运行请求 2 的东西。
我想知道的是——
- 我可以在每个请求上使用诸如 catchError() 之类的东西吗?
- 如果我希望请求 1 在第二个请求运行之前完成,这是正确的吗?
谢谢!
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)
,则会打印
还应该concatMap
用RxCachedThreadScheduler
吗?或者是故意的。
rx-java2 - 中断 concatMap 中的单个 observable
我曾经通过concatMap
长时间运行的操作一次处理一个项目流。在某些时候,我需要“中断”这个长时间运行的操作,但仅限于当前项目:
我试图通过保留“内部”流的一次性并在正确的时间处理它来解决这个问题。但这没有用。内部流已被处理,但concatMap
从未继续处理第 3 项。测试只是挂起(因为外部 observable 也从未完成/终止/处理)
即使这确实有效,但依靠副作用似乎有点笨拙。实现这一目标的最佳方法是什么?
angular - RxJS | 如何使用 concatMap 在管道中捕获和失败?
我试图用它concatMap
来允许我按顺序运行请求,而不必在视觉上订阅我发送的每个请求。
一切正常,但是当出现错误时,它会继续通过管道运行,这是我不想要的。
如果它失败了,我只想能够取消所有的请求,让它停止运行并显示一些东西。我已经尝试过catchError
,但这似乎不起作用/做我想做的事。
举这个例子...
我想重置用户密码,在密码重置后我想登录POST
到/password/resets
端点,然后我想自动登录用户,所以我想发帖,/auth/login
然后我想获取用户GET - /user
以便我可以使用它在整个应用程序中。如果请求在任何阶段失败。我想停止管道并抛出问题底部显示的一般错误。
例子:
下面的代码片段是我想在错误时运行的东西 -
parallel-processing - Rxjava2如何让flatMap按调用顺序发射项目?
想象有 Observable A 发射
A.flatMap(a -> f(a))
将以不可预知的顺序发出项目,例如:
我怎样才能按如下顺序获得结果?
ConcatMap
可以返回我想要的结果,但是它是按顺序处理流的,在耗时方面效果不佳。我需要像 concatMap 这样具有并行处理能力的东西。有什么解决办法吗?谢谢。
angular - 如何在第二个请求中使用来自 concatMap 的第一个响应
我试图避免对后端请求的嵌套订阅。我需要登录,然后根据登录的响应获取服务令牌,然后根据服务令牌获取加密令牌。
我见过 concatMap 但我不确定如何在第二个请求或第三个请求中使用第一个响应