Angular 角度6创建一个可观察的,以检查变量的变化
我使用的是Angular 6,我想检查变量是否有变化,以及变量有值时是否停止或取消订阅 所以我想到了一个可观察的:Angular 角度6创建一个可观察的,以检查变量的变化,angular,typescript,rxjs,angular6,rxjs6,Angular,Typescript,Rxjs,Angular6,Rxjs6,我使用的是Angular 6,我想检查变量是否有变化,以及变量有值时是否停止或取消订阅 所以我想到了一个可观察的: myValue; // variable to be checked myObservable = Observable.timer(2000); // every 2 seconds myObservable.subscribe(); // start private _value: any; public set value(value: any) { this._v
myValue; // variable to be checked
myObservable = Observable.timer(2000); // every 2 seconds
myObservable.subscribe(); // start
private _value: any;
public set value(value: any) {
this._value = value;
window.alert("Value is set!");
}
public get value() { return this._value; }
然后继续检查myValue,如果值不是空的
myObservable.unsubscribe(); // stop
这就是我的想法
如何执行此操作?如果您只想在设置值时执行某些操作,则可以使用getter和setter而不是observable:
myValue; // variable to be checked
myObservable = Observable.timer(2000); // every 2 seconds
myObservable.subscribe(); // start
private _value: any;
public set value(value: any) {
this._value = value;
window.alert("Value is set!");
}
public get value() { return this._value; }
根据实际的潜在问题,可能还有其他(更好的)解决方案 你为什么要这样做?我几乎可以保证有更好的解决方案来解决根本问题。我完全同意@IngoBürk的观点,这听起来像是一个错误。您试图解决的问题是什么?问题是我正在进行一些api调用,我需要确保在继续之前拥有所有数据。您应该为此使用适当的rxjs管道和运算符。但是您需要向我们展示更多代码来帮助您实现这一点。要查看的内容是,例如,forkJoin。请查看我是否需要将此设置为setTimeout,以便它不断检查变量是否为空?不,不需要。每当有人试图为setter赋值时,就会调用setter。