是否可以从外部收听用户功能?
x:string;
listenertwitchService(){
console.log(this.x);
}
this.twitchService.getUserID(this.Tw_Username).subscribe(data => {
this.x="123";
});
这是正常的行为:
1)您的x未定义
X:字符串;
//should be
x = '';
2)Observable异步工作,这意味着如果你想使用this.twitchService.getUserID(this.Tw_Username)
的x返回,你需要使用rxjs管道和运算符,因为尝试访问其值是异步设置的全局变量不是一个好主意,因为它很难知道将设置x的值,即当您的Observable将触发时。但是对于模板绑定,在设置初始值时绑定全局变量非常有用,请参阅(1)
this.twitchService.getUserID(this.Tw_Username)
.pipe(tap(data)=>{ //or any other operator ie map/switchMap etc...
//do the thing you want to do to the data
})
.subscribe()
如果你在console.log(this.x)
之后subscribe
仍然未定义,因为subscribe
调用asynchronous
,它将不会等待从getUserID
返回数据并运行下一行代码
this.twitchService.getUserID(this.Tw_Username)
.subscribe(data => {
this.x="123";
});
//still undefined
console.log(this.x)