使用 RxJS Observables 排队 - Angular 5
Queuing using RxJS Observables - Angular 5
我正在使用 Angular 5.
开发 SPA
我有一个场景需要多次调用 Rest API 方法,下面是一个示例。
我有一个对象列表(比如 100 个对象),它们将作为参数传递给 API 方法。我需要通过选择前 10 个对象(异步 API 调用)来对对象进行排队,如果有任何调用响应,我需要将下一个对象推送到队列中,直到处理完所有 100 个对象。
这在技术上是否可以实现。如果是,谁能建议如何实现这一目标。
提前致谢。
你可以只用 mergeMap
来做到这一点,它带有一个可选的第二个参数,告诉你希望它保留多少个并发订阅(顺便说一句 concatMap
只是 mergeMap
和 1
并发):
from([obj1, obj2, obj3, ..., obj100])
.pipe(
mergeMap(obj => makeHttpCall(obj), 10),
)
.subscribe(...);
这将始终保持 10 个 HTTP 调用处于活动状态。当一个完成时它会立即选择另一个。
我正在使用 Angular 5.
开发 SPA我有一个场景需要多次调用 Rest API 方法,下面是一个示例。
我有一个对象列表(比如 100 个对象),它们将作为参数传递给 API 方法。我需要通过选择前 10 个对象(异步 API 调用)来对对象进行排队,如果有任何调用响应,我需要将下一个对象推送到队列中,直到处理完所有 100 个对象。
这在技术上是否可以实现。如果是,谁能建议如何实现这一目标。
提前致谢。
你可以只用 mergeMap
来做到这一点,它带有一个可选的第二个参数,告诉你希望它保留多少个并发订阅(顺便说一句 concatMap
只是 mergeMap
和 1
并发):
from([obj1, obj2, obj3, ..., obj100])
.pipe(
mergeMap(obj => makeHttpCall(obj), 10),
)
.subscribe(...);
这将始终保持 10 个 HTTP 调用处于活动状态。当一个完成时它会立即选择另一个。