angular - 如何在运行下一行代码 Angular2 之前等待 AngularFire2 订阅完成

标签 angular typescript firebase firebase-realtime-database async-await

我的 Angular2 Type Script 代码有问题。我正在尝试通过订阅 FirebaseListObserver 来访问 Firebase 数据库中的问题:

this.af.list('/questions').subscribe( val => {
     this.questions = val
     console.log(this.questions) // works
})
console.log(this.questions) // displays undefined

不过,在运行依赖于 this.questions 的函数之前,我不知道如何等待订阅获取值。

我尝试使用 async/await,但也没有等待订阅获取值。

我也尝试在 promise 中订阅,但也返回了一个空数组。

最佳答案

您可以从 subscribe 回调中运行该函数,也可以将 questions 转换为 setter/getter:

private _questions = [];

set questions(questions) {
  this._questions = questions;

  // React to questions changes here
}

get questions() {
 return this._questions;
}

如果您熟悉 Angular 的早期版本,它会有点像观察者。因此,在 set 函数中,您可以检查 questions 是否有值并对其使用react,调用您需要的任何函数。

关于angular - 如何在运行下一行代码 Angular2 之前等待 AngularFire2 订阅完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143850/

相关文章:

node.js - Firebase 部署云功能突然不起作用了

angular - 在 Angular 2 中的 2 个组件之间共享数据

css - 如何在 ngb-datepicker - Angular 中更改特定日期单元格的背景

angular - 在 ionic 3 中使用仪表

javascript - React Native Flatlist 搜索没有从 firebase 用户集合中返回任何值

node.js - Firebase多路径更新将父 Node 设置为null

Angular 4 : Date pipe, UTC时间到本地时间: How to tell Angular the current time zone?

javascript - 如何动态设置TinyMCE编辑器内容

javascript - 如何使用 angular2-tree 插件获取检查的树结构值

typescript - 如何省略[key :string]: any from a type in typescript?