我正在创建一个测试应用程序,其中包含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];
}
然而,这只是导致应用程序挂起。