我有一个 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/