我正在尝试学习反应式编程。我正在模拟布尔变量随时间的变化。我的想法是,我不知道何时更改它,但是我希望应用程序执行一次console.log,该变量每次从false
更改为{{1}时都为true }。我是这样做的:
true
我想不通告诉应用程序每次let x = false
setInterval(function(){
x = !x;
}, 3000);
都在x
变量的状态和着火console.log("now it's true")
的情况下观看应用程序的方法。
最简单的方法是什么?我想我可以使用可观察对象来做到这一点,但是,我有点卡住了。
谢谢您的帮助。
答案 0 :(得分:2)
我也是反应式编程的新手。
我会说您正确使用了可观察值。 与其将setInterval设置为x =!x,还不如这样做
例如,我没有运行它。
private xSubject = new ReplaySubject<any> (bufferSize:1);
private xReadySubject: Observable<any> = this.xSubject.asObservable();
...
// In the setInterval
this.xSubject.next(!x);
xReadySubject.subscribe(argX => {
console.log("Value of x: " + argX
});
答案 1 :(得分:1)
首先,您应该了解没有人使用纯js编写“反应式编程” :)有很多实现反应性的库,例如React,Vue,Angular。
我认为,JS中的每个反应性实现都基于以下基础方法:
const obj = {
x: true,
setX(value) {
this.x = value;
// You can track x value here
},
};
obj.setX(false);
const obj = {
_x: 5,
get x() {
return this._x;
},
set x(value) {
this._x = value;
// You can track x value here
},
};
obj.x = 6;
答案 2 :(得分:0)
我发现它正在工作
let x = false
setInterval(function(){
x = !x;
console.log(x);
}, 1000);