Angular 2 限制并行 http 调用

标签 angular rxjs

我有一个 Angular 2 应用程序,它从服务器获取不同数量的 ID,然后针对每个 ID 在 forkJoin 中进行另一个 REST 调用。

但是,id 的数量可能会达到数百个,这在突然并行进行数百个 REST 调用时可能会出现问题。

在使用 RxJs 和 forkJoin 运算符时,有没有办法限制并行调用的数量?

最佳答案

唯一的方法是使用 bufferCount:

Rx.Observable.from([1,2,3,4,5,6,7,8])
  .bufferCount(3)
  .concatMap(items => {
    console.log('ConcatMap', items);
    let tasks = items.map(item => Rx.Observable.timer(Math.random() * 1000).do(() => console.log(item, 'ready')));
    return Rx.Observable.forkJoin(...tasks);
  })
  .subscribe()
<script src="https://npmcdn.com/@reactivex/rxjs@5.3.1/dist/global/Rx.js"></script>

关于Angular 2 限制并行 http 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44486150/

相关文章:

Angular - 我需要避免破坏组件

javascript - RxJS 6 : Subscribe only onComplete

javascript - 从 ORM 返回的一系列 Promise 生成一个 RxJS Observable

angular - RxJs Observable - 通过发出默认值处理 404

javascript - switchMap 操作只在第一次调用时运行?

json - Angular 2 中带有 Observable 的 http 无法使用数据

typescript - 如何在 angular2 中将 ag-grid 与 Observable 一起使用?

html - 如何在单击链接时使用 ng bootstrap 在 angular 8 中获得来自循环的相应模态

Angular 6 使用 POST 重定向到外部 url

angular - 从 Angular 2 中的组件代码访问模板中异步管道的结果