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

时间:2017-07-17 12:04:36

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

我的Angular2类型脚本代码有问题。我试图通过订阅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中订阅,但也返回了一个空数组。

1 个答案:

答案 0 :(得分:0)

您可以在subscribe回调中运行该功能,也可以将questions转换为设置者/获取者:

private _questions = [];

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

  // React to questions changes here
}

get questions() {
 return this._questions;
}

如果您熟悉角度的早期版本,那将会像观察者一样行事。因此,在set函数中,您可以检查questions是否有值并对其作出反应,调用您需要的任何函数。