首页 > 解决方案 > 在箭头函数之外进行控制台时,变量在箭头函数内部更改未更改

问题描述

我正在使用角度和打字稿,并想更改函数内变量的值。我正在使用服务来获取数据。代码如下所示:

 isValue:boolean = false;

  onChangeValue(list: List) {
     this.someServive.getData(list).subscribe(
        item => {
        if(item.value === 1) {
            this.isValue = true;
          }
       }); 
   console.log(this.isValue);          //the value is still false here  
  }

标签: javascriptangulartypescriptarrow-functions

解决方案


由于 javascript 是异步的,因此在 getData 服务调用实际发生之前,该值不会改变。

在您的情况下,控制台在 getData 发生之前执行。

你可以用 promise 或 callback 来试试

试试下面:

isValue:boolean = false;

onChangeValue(list: List) { 
   onDataRecieved((res)=>{
     console.log(this.isValue);
   });    
}       

onDataRecieved(cb){
 this.someServive.getData(list).subscribe(
      item => {
      if(item.value === 1) {
         this.isValue = true;
         cb(true);
      }
   });
}

推荐阅读