在我的组件中,我将一组需要执行的操作分组在一起。执行它们的顺序并不重要,但是如果成功,我想在最后显示。每个操作都将导致对WebAPI的调用。 (我非常感谢,如果一次调用传递操作会更好,但不是一种选择。
不幸的是,调用次数太多,实际上是在DOS下运行API。我尝试进行延迟,但可能未将其放置在正确的位置
const results: any[] = [];
this.bigArray.forEach(item =>
results.push(
this.aServiceWhichWillCallAPostMethod.doAnUpdate(item)
)
);
forkJoin(results).subscribe(
data => {
Console.log('Yeah');
},
error => {
Console.log('Oops');
},
() => {
}
);
我尝试在此处添加延迟时间
this.aServiceWhichWillCallAPostMethod.doAnUpdate(item).pipe(delay(5000))
在这里
forkJoin(results).subscribe
但没有运气
答案 0 :(得分:3)
最简单的方法是尝试重写代码以使用mergeMap而不是forkJoin。 Missing label具有本机支持,可以限制调用可观察变量的并发性。
Rx.Observable.from(this.bigArray).mergeMap(
item => this.aServiceWhichWillCallAPostMethod.doAnUpdate(item), */ project */
undefined, /* resultselector */
5 /* concurrency */
)
.subscribe();
这样,您最多可以处理5个项目(不保留订单,merge
策略)。