Mar*_*ark 1 rxjs angular2-observables angular
在我的组件中,我将一组需要执行的操作组合在一起。它们执行的顺序并不重要,但如果成功,我想在最后显示。每个操作都会导致调用 WebAPI。(我不明白,这将是很多更好,如果操作都是在一个呼叫传递然而,这是不是一种选择。
不幸的是,调用的次数太多了,它有效地对 API 进行了 DOS 处理。我试图延迟管道,但也许我没有把它放在正确的地方
const results: any[] = [];
this.bigArray.forEach(item =>
results.push(
this.aServiceWhichWillCallAPostMethod.doAnUpdate(item)
)
);
forkJoin(results).subscribe(
data => {
Console.log('Yeah');
},
error => {
Console.log('Oops');
},
() => {
}
);
Run Code Online (Sandbox Code Playgroud)
我试过在这里添加延迟
this.aServiceWhichWillCallAPostMethod.doAnUpdate(item).pipe(delay(5000))
Run Code Online (Sandbox Code Playgroud)
和这里
forkJoin(results).subscribe
Run Code Online (Sandbox Code Playgroud)
但没有运气
最简单的方法是尝试重写代码以使用 mergeMap 而不是 forkJoin。.mergeMap()具有本地支持以限制调用 observable 的并发性。
Rx.Observable.from(this.bigArray).mergeMap(
item => this.aServiceWhichWillCallAPostMethod.doAnUpdate(item), */ project */
undefined, /* resultselector */
5 /* concurrency */
)
.subscribe();
Run Code Online (Sandbox Code Playgroud)
这样,您最多可以处理 5 个项目(不是订单保留,merge策略)。
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |