【发布时间】:2021-02-14 08:02:20
【问题描述】:
是否可以确保订阅者是观察者队列中最后一个被执行的? delay(0) 对我来说是没有选择的,因为我需要代码在行中而不是异步执行。
let observable = new Subject<void>();
//delay(0) no option!
observable.pipe().subscribe(() => console.log("I want to be last!"));
observable.subscribe(() => console.log("I want to be first!"));
observable.next();
我在这里创建了一个示例:https://stackblitz.com/edit/rxjs-demo-xuf2ru
我希望第一个订阅者最后执行。当前控制台输出为:
我想成为最后一个!
我想成为第一!
【问题讨论】:
-
你为什么在乎?如果您对此有疑问,则表明存在更深层次的问题。订阅者应该是独立的。
-
我需要在所有事件发布后调用 Angular 的 cdr。我可以在调用主题之后调用它,或者在调用主题之后调用它,我认为更好。但由于它不是 cdr 特定的,我没有提到它,因为它不会造成不必要的混淆。
标签: javascript rxjs rxjs-observables