2017-07-17 67 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

相關問題