Angular 7'undefined'变量

问题描述 投票:0回答:2

是否可以从外部收听用户功能?

x:string;
listenertwitchService(){
     console.log(this.x);
}

this.twitchService.getUserID(this.Tw_Username).subscribe(data => {
     this.x="123";
});
angular angular7
2个回答
0
投票

这是正常的行为:

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()

欲了解更多信息:https://www.learnrxjs.io/operators/


0
投票

如果你在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)
© www.soinside.com 2019 - 2024. All rights reserved.