【问题标题】:Queuing using RxJS Observables - Angular 5使用 RxJS Observables 排队 - Angular 5
【发布时间】:2018-11-24 10:20:35
【问题描述】:

我正在使用 Angular 5 开发 SPA。

我有一个场景,我需要多次调用一个 Rest API 方法,下面是一个示例。

我有一个对象列表(比如 100 个对象),它们将作为参数传递给 API 方法。我需要通过选择前 10 个对象(异步 API 调用)对对象进行排队,如果有任何调用响应,我需要将下一个对象推送到队列中,直到处理完所有 100 个对象。

这在技术上是否可能实现。如果是的话,任何人都可以建议如何实现这一点。

提前致谢。

【问题讨论】:

  • 所以你总是希望一次执行 10 个请求。当一个完成后,您想立即开始另一个。
  • @martin 感谢您的快速回复。这取决于我拥有的对象总数。例如,我在这里提到了 10 个
  • 好的,但是当一个完成后你想立即开始另一个?
  • 是的,将另一个添加到队列中

标签: angular queue rxjs angular5 angular2-observables


【解决方案1】:

您可以只使用mergeMap 来执行此操作,它带有一个可选的第二个参数,该参数告诉您希望它保留多少并发订阅(顺便说一句,concatMap 只是mergeMap1 并发):

from([obj1, obj2, obj3, ..., obj100])
  .pipe(
    mergeMap(obj => makeHttpCall(obj), 10),
  )
  .subscribe(...);

这将始终保持 10 个 HTTP 调用处于活动状态。当一个完成后,它会立即选择另一个。

【讨论】:

  • 感谢您的代码 sn-p。将尝试实施它并相应地更新您。
猜你喜欢
  • 1970-01-01
  • 2020-02-10
  • 2017-03-20
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多