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

angular - RxJs Angular 多重同步 http 网络调用

如果状态正常,我必须进行多次同步网络通话,一个接一个。

可怕但有效的代码:

我尝试使用 concatMap

但我需要检查每个答案是否都可以。有一个漂亮的解决方案吗?

0 投票
2 回答
1233 浏览

angular - 如何按顺序订阅并仅返回 RxJS 中最后一个 observable 的值?

我在一个 Angular 路由解析器中,想要返回一个 observable。

我需要按顺序订阅多个异步进程:

A => B(a) => C(b)

C 依赖于 B,B 依赖于 A。A 必须完成,然后是 B,然后是 C,但我只希望 C 中的值用于导致路由解析。

我尝试了两种不同的方法:

我也试过

我如何订阅 A,然后是 B,然后是 C ...,然后只从最里面的 observable 中获取值?

如果我在最后一个 concatMap 之后点击,我会得到预期的返回值。但是我的解析器永远不会解析?(或者发出了错误的东西?我真的不能说。)

0 投票
2 回答
899 浏览

angular - 使用 RXJS Observables 发送顺序 Http 请求

我想要一个函数,它向端点发送一个 http 请求,给出所有项目的列表,然后发送第二个请求以获取该列表中的第一个元素。该函数应返回最后一项。我正在使用以下代码,但第二个 http 请求不起作用。

使用 Angular 7 和 rxjs 6.4.0

任何帮助表示赞赏。

编辑:运行以下代码段时,第二个控制台日志永远不会被调用

0 投票
2 回答
173 浏览

rx-swift - RxSwift:实现 concatMap 生成可重入异常被检测到错误

我正在尝试在concatMap内部实现,RxSwift但是当我尝试为内部的可观察对象设置一个新值时,concatMap我收到了这个错误:

这是我的代码:

你们中的任何人都知道我为什么会收到此错误或如何更改我的实现以避免收到此错误/警告?

我会非常感谢你的帮助。

0 投票
2 回答
734 浏览

javascript - RXJS 链依赖的 observables 顺序,但获取进度条的每个发射

我遇到了一个问题,我一直在尝试使用 找到解决方案RxJs,但似乎找不到适合它的解决方案...

  • 我有 3 个不同的 REST 请求,它们将按顺序调用,每个请求都需要前一个的响应作为参数
  • 我想实现一个进度条,随着请求成功而增加

这是我的想法:

  • 我将使用管道并concatMap()避免嵌套订阅,并在前一个请求完成后订阅每个请求。

考虑这个非常简化的版本。假设每个都of代表一个完整的 REST 成功请求(稍后将处理错误),并且我将使用n参数做未显示的工作......

但是,当我订阅最后一段代码时,我只会得到最后一个请求的响应,这是预期的,因为管道会解决这个问题。

因此concatMap(),我可以正确链接我的依赖 REST 调用,但无法跟踪进度。

虽然我可以通过嵌套订阅很容易地跟踪进度,但我正在努力避免这种情况并使用最佳实践方式。

我怎样才能链接我的依赖 REST 调用,但每次调用成功时仍然能够做一些事情?

0 投票
1 回答
465 浏览

angular - 如何在循环中以角度实现多个顺序 Http 请求(每个新请求取决于先前的结果)


我有一个网格,其中包含要加载的大量数据,因此加载时间变得难以管理。我找到的解决方案是执行连续数量的 http 请求,每个请求检索 100 行的批次,直到完成网格上的所有数据。我知道如何使用 concatMap 实现 2 个连续的 http 请求,它运行良好,但我希望有一个 while 循环来验证每个响应,如果当前行数 < 总行数,则订阅一个新的 Http 请求。奇怪的是我没有找到任何解决方案,也许我从一开始就想错了这个解决方案:D 任何帮助都会非常受欢迎!提前致谢!

用于使用 concatMap 执行 2 个 http 请求的转发代码:

}

0 投票
1 回答
80 浏览

angular - Angular 8:分解 HTTP 请求而不是一次性发送

嗨 StackOverflow 社区成员,

我正在研究 Angular 8。我有一个关于如何分解我的 HTTP 请求的问题,而不是一次发送 1000 个请求,我希望每 50 个请求一次发送一次。我想不出任何方法来实现这一点。下面是我的代码片段:

上面的代码会一次性触发所有请求,想象一下如果我有 1000 个产品在products数组中,这意味着它会循环 1000 次,并且会向服务器发送 1000 个请求并导致性能问题。有没有办法限制客户端不要一次性发送所有请求?

我试过combineLatest了,结果不是我想要的。我想尝试concatMap,但这意味着它会逐个发送 HTTP 请求,并且需要很长时间来处理所有产品。有什么建议或想法吗?

0 投票
1 回答
62 浏览

angular - Angular HTTP 删除请求,应用程序更新问题

链接到 stackblitz 编辑器: https ://stackblitz.com/edit/github-krcuye

需要具有完整测试功能的 API 链接: https ://github.com/TSPeterson206/conspiracyAPI

API 使用 knex,种子需要通过以下方式运行:npm run knex seed:run...由于项目在单击时被删除。

我正在尝试使用 HTTP 删除请求从数组中删除一个项目,然后发出 HTTP 获取请求以获取现在更改的数组以继续在应用程序中使用。我可以删除该项目,它似乎离开了数据库。该元素将消失,我可以使用邮递员查看它已消失。在重新加载之前,该应用程序似乎没有反映缺席。我在用于删除的函数中调用另一个函数,这个已删除的项目显示为存在(toggleData)。当我在启动页面中显示 {{allNouns.length}} 时,我需要实时更新应用程序。我正在使用 httpClientModule 并点击/concatMap。我玩弄了 async/await 和 setTimeout,但到目前为止还没有运气。任何有关操作顺序或如何最好地查看实时结果的信息将不胜感激。

只是为了上下文。this.userNounsHolder 是用于允许删除的仪表板的对象数组。this.allNouns 是显示在主页中的字符串数组。3 个复选框(由 toggleData 处理)确定数组中的字符串。在 ngOninit 中进行了一堆 HTTP 调用,但这些调用处理得很好,并且似乎与这个特定问题无关。谢谢你的眼睛。

目前我只是想为名词做这项工作。单击模态以查看有问题的仪表板。

用于删除的功能

包含删除功能的 HTML

toggleData 函数的 TS

0 投票
2 回答
641 浏览

rxjs - 为什么 concatMap 没有按预期工作?

请在下面查看我的代码

这是我的输出:

在此处输入图像描述

我预计 Backbone 完成后,它会继续使用 Angular、React 和 Vue。但是在 Backbone 之后执行停止了

有什么解释吗?

0 投票
1 回答
200 浏览

angular - Rxjs concat map 条件检查,然后再进行第二次调用

我想在继续之前检查第一个服务呼叫结果。如果第一次通话失败,我有一些事情要处理