我正在創建一個測試應用程序,其中包含1000個託管在Firebase上的問題。爲了防止多次下載的問題,我已經實現了一個問題,服務地方在構造函數中我下載的問題:角度4異步數據存儲
this.db.list("questions/", { preserveSnapshot: true}).subscribe(snapshots => {...}
此下載的問題,並將其推到一個問題陣列,這樣我就不必重新下載,直到下一個會話。我也有一個功能,以服務問題:
getQuestion(){
return this.questions[0];
}
然而,由於火力的異步性,很多時候數據尚未getQuestion()
之前下載的調用,因此它返回undefined。
有沒有適當的方式來實現這種數據存儲類型模式的角度,並確保異步調用在構造函數完成調用getQuestion()
之前完成?
我試着添加一個變量ready
,將它初始化爲false,並在異步調用返回時將其設置爲true。然後,getQuestions()
被修改的樣子:
getQuestion(){
while(!this.ready()){}
return this.questions[0];
}
然而,這只是導致應用程序掛起。