【发布时间】:2020-12-15 14:36:47
【问题描述】:
我已经看了很长时间,但我真的没有弄清楚如何“正确”地做到这一点。所有其他答案要么被弃用,要么以相反的顺序执行。
我想做的是,我想并行发送一堆 HTTP 请求,因此是 forkJoin。然后只有当它们完成时,我想调用另一个 HTTP 请求(现在在 submitOrder() 中)。
然后在某个时候,如果第一个 HTTP 请求成功,我想再次将我的对象标记为不脏。
这段代码有效,但我知道这确实不是“正确”的做法,因为它在订阅中调用订阅。
请问,真正的 RxJs 方式是什么?
forkJoin(obsArray).subscribe(res => {
console.log('All were resolved');
this.products.forEach(element => {
this.isNotDirtyAnymore();
});
this.submitOrder();
});
submitOrder() {
this.service.submitOrder(this.id).subscribe(response => {
console.log('Order was submitted');
}, error => {
console.log(error);
});
}
【问题讨论】:
-
在forkJoin之后不能使用switchMap吗?
-
至少不链接,如 forkJoin(array).switchMap() - 抱怨它不是 Observable 的一部分。这可能与 RxJS 的更新有关。
标签: angular http rxjs reactive-programming