我已经实现了一个简单的BehaviorSubject
,
import {BehaviorSubject} from "rxjs";
class MyWeirdoClass {
constructor() {}
private st: Subject<boolean> = new BehaviorSubject<boolean>(null);
changeSt(val:boolean){
this.st.next(val);
}
val(){
this.st.subscribe(res=>{
if (res){
console.log(res);
}
})
}
stStatus() {
this.val();
this.changeSt(true);
this.val();
this.changeSt(false);
this.val();
}
}
现在,当运行
stStatus()
时,会在控制台上提供日志以下输出。true
true
虽然我期望值(value)
false
true
false
我的实现有什么问题?
最佳答案
您得到的输出是正确的:
this.val();
由于
if (res) {...}
,这仅使第一个订阅不打印任何内容。this.changeSt(true);
将值设置为
true
,该值由第一个订阅打印。this.val();
进行第二个订阅,打印第二个
true
。this.changeSt(false);
您将其设置为
false
,由于if (res) {...}
,所有订阅者都将其忽略。this.val();
与上述相同。
关于javascript - 具有 bool 值的BehaviorSubject无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41951592/