我在角度6中使用rxjs
例如,只有一个变量
let a = 1;
我想改变a的任何功能 我认为rxjs可以帮助我 帮助我如何检测更改时间
答案 0 :(得分:3)
没有RxJS,您可以拥有getter/setter
并使用它们来检测更改
private localA = 0;
public get a() {
}
public set a(value) { // new value assigned via this.a = 4
}
在setter a
中,您可以检测到变量localA
所做的任何更改。您只需要使用getter/setter a
this.a = 5
这将运行public set a()
函数,您可以在其中编写逻辑。
getter/setter
的示例
const obj = {
localA: 4,
get a() {
return this.localA;
},
set a(value) {
this.localA = value;
console.log(`localA is changed to ${value}`);
}
};
obj.a = 5;
obj.a = 6;
console.log(obj.a);
答案 1 :(得分:1)
您可以为此使用Observables:
// Observable string sources
private variableUpdatedSource = new Subject<any>();
// Observable string streams
variableUpdated$ = this.variableUpdatedSource.asObservable();
// Message commands
updateVariable(data: any) {
this.variableUpdatedSource.next(data);
}
当您要更新变量时,只需调用“ updateVariable”函数,而当您要获取每个更新时,请使用subscribe->
this.variableUpdated$.subscribe(data => { /* what to do with it? */ });
如果只想更改一个,可以执行以下操作:
this.variableUpdated$.pipe(
take(1),
tap(data => { /* What do to with result */ })
).subscribe();
答案 2 :(得分:0)
您可以使用设置器功能
private _a = 1;
public get a() {
return this._a;
}
public set a(val) {
this._a - val;
// Do whatever you want in here
}
您仍然可以像以前一样访问a
,但是只要您设置一个值(例如this.a = 2
),设置器就会被执行。