gpt4 book ai didi

javascript - RxJs - 我可以将 BehaviorSubject 与 takeUntil 一起使用吗?

转载 作者:行者123 更新时间:2023-12-05 01:43:40 25 4
gpt4 key购买 nike

我想使用 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;
}
}

最佳答案

当然可以,只需使用 skip() 跳过第一个初始值:

this.status2$
.pipe(
takeUntil(
this.status1$.pipe(skip(1))
),
)
.subscribe((val: boolean) => {
// I execute until status1$ emits
}

顺便说一句:从 RxJS >= 5.5 开始,您可能会使用 pipe就像我的例子一样。您也可以在末尾使用 $ 命名您的 observables,这样它会显示为“status1stream”

关于javascript - RxJs - 我可以将 BehaviorSubject 与 takeUntil 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com