2017-07-17 70 views
1

我的Angular2类型脚本代码存在问题。我试图从火力地堡数据库,其中我订阅到FirebaseListObserver做访问问题:如何在运行下一行代码之前等待AngularFire2订阅完成Angular2

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

我不知道如何等待订阅获得的值,但是,在运行函数之前其取决于this.questions

我试图使用异步/等待,但也没有等待订阅获得一个值。

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

回答

0

您可以从subscribe回调中运行该功能也可以打开questions成一个setter /吸气:

private _questions = []; 

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

    // React to questions changes here 
} 

get questions() { 
return this._questions; 
} 

如果你熟悉的早期版本,它会有点像一个守望者角。因此,在set函数中,您可以检查questions是否有值并对其作出响应,调用所需的任何函数。

+0

我已经试过在订阅回调中调用函数,但它似乎工作不一致,所以有时它可以工作,但有时它会返回undefined。我和setter/getter有同样的问题。 –

+0

@LucasMähn这不应该发生,你可以在订阅之前添加'.filter(data => data!== undefined)',看看是否有帮助? – Chrillewoodz

相关问题