我有一个 Angular 2 应用程序,它从服务器获取不同数量的 id,然后为每个 id 在forkJoin.
然而,id 的数量可能高达数百个,当突然并行进行数百个 REST 调用时,这可能会出现问题。
使用 RxJ 和运算符时是否有办法限制并行调用的数量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()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)
| 归档时间: |
|
| 查看次数: |
3273 次 |
| 最近记录: |