使用 RxJS Observables 排队 - Angular 5

Queuing using RxJS Observables - Angular 5

我正在使用 Angular 5.

开发 SPA

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

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

这在技术上是否可以实现。如果是,谁能建议如何实现这一目标。

提前致谢。

你可以只用 mergeMap 来做到这一点,它带有一个可选的第二个参数,告诉你希望它保留多少个并发订阅(顺便说一句 concatMap 只是 mergeMap1并发):

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

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