Bil*_*ams 3 javascript behaviorsubject rxjs5
我想使用BehaviorSubject 使用 takeUntil 取消订阅另一个 Observable。当我使用 takeUntil 订阅 Observable 时,它似乎立即取消订阅。这段代码适用于主题,但我想要一个初始值集。
我正在使用 rxjs 5.5.6
//MyService1
class Observable1 {
status1: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
displayStatus1(val: boolean) {
this.status1.next(val)
}
}
//MyService2
class Observable2 {
status2: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
displayStatus2(val: boolean) {
this.status2.next(val)
}
}
//MyComponent
status: boolean;
constructor(private myService1: MyService1, private myService2: MyService2) {
this.subscribeToObservable1();
this.subscribeToObservable2();
}
subscribeToObservable1() {
this.myService1.status1.subscribe((val: boolean) => {
console.log('val: ', val);
}
}
subscribeToObservable2() {
this.myService2.status2
.takeUntil(this.myService1.status1)
.subscribe((val: boolean) => {
this.status = val;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以简单地使用skip()跳过第一个初始值:
this.status2$
.pipe(
takeUntil(
this.status1$.pipe(skip(1))
),
)
.subscribe((val: boolean) => {
// I execute until status1$ emits
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:从 RxJS >= 5.5 开始,您可以像我的示例中那样使用管道。$另外,您可以在末尾使用 a 来命名您的可观察量,这样它就会显示为“status1stream”
| 归档时间: |
|
| 查看次数: |
5042 次 |
| 最近记录: |