javascript - Angular 2+等待订阅完成更新/访问变量

标签 javascript angular typescript rxjs observable

我的变量未定义时遇到问题。我确定这是因为 observable 还没有完成。这是我的 .ts 文件中导致问题的代码部分。 (我放置了理解该问题所需的最少代码。此外,myFunction 从 HTML 中的点击事件中被调用)。

export class myClass {
  myVariable: any;

  myFunction() {
    this.myService.getApi().subscribe(data => {
      this.myVariable = data;
    });

    console.log(myVariable) --> undefined
  }
}

所以这段代码调用了我的服务中的一个函数,该函数从 API 返回一些数据。问题是,当我尝试在订阅函数之外访问变量 myVariable 时,它返回未定义。我确定这是因为在我尝试访问 myVariable

之前订阅尚未完成

在我尝试访问 myVariable 之前,有没有办法等待订阅完成?

最佳答案

为什么不创建一个单独的函数并在订阅中调用它。

export class myClass {
  myVariable: any;

  myFunction() {
    this.myService.getApi().subscribe(data => {
      this.myVariable = data;
      this.update()
    });

    this.update()
  }

  update(){
    console.log(this.myVariable);
  }
}

关于javascript - Angular 2+等待订阅完成更新/访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50951779/

相关文章:

Angular:如何将内联样式传递给组件

node.js - 无法解决org.nodejs:本地生成错误

typescript - 类方法的条件返回类型取决于构造函数中的选项

reactjs - 如何为 React props 定义 TypeScript 类型,其中仅当 prop A 传递给组件时才接受 prop B?

javascript - 动态地需要一个 child 下的 child

javascript - Polymer 1.0 的 tokenList 样式发生了什么变化

javascript - 如何将 JSON 数据转换为 XML?

javascript - 如何使用javascript获得随机颜色(仅限深色)?

typescript - 如何在 typescript NPM 包中导出(和使用)JSDoc 注释

javascript - 无法调用 JS 进行验证 (JSF)