Angular 2限制并行http调用

use*_*433 3 rxjs angular

我有一个 Angular 2 应用程序,它从服务器获取不同数量的 id,然后为每个 id 在forkJoin.

然而,id 的数量可能高达数百个,当突然并行进行数百个 REST 调用时,这可能会出现问题。

使用 RxJ 和运算符时是否有办法限制并行调用的数量forkJoin

Ser*_*lov 5

唯一的方法是使用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()
Run Code Online (Sandbox Code Playgroud)
<script src="https://npmcdn.com/@reactivex/rxjs@5.3.1/dist/global/Rx.js"></script>
Run Code Online (Sandbox Code Playgroud)