2017-06-11 17 views
0

我有一个Angular 2应用程序,它从服务器获取不同数量的id,然后为每个id在forkJoin中创建另一个REST调用。Angular 2限制并行http调用

但是,ids的数量可能会上升到几百个,这可能会在突然进行几百个REST调用时出现问题。

当使用RxJs和forkJoin运算符时,是否有限制并行调用数的方法?

+2

[在与RxJS时间的请求数限制(可能的重复https://stackoverflow.com/questions/34535685/limit-number-of-request-at-a-time-with-rxjs) – developer033

回答

2

ONW方式是使用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/[email protected]/dist/global/Rx.js"></script>

+0

辉煌:)!!! – Maxime