我的 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/