【发布时间】:2019-08-20 16:50:46
【问题描述】:
在我的 home.ts 中,我正在调用服务中的一个函数,该函数使用来自 firestore 响应(可观察)的数据填充数组,但是当我尝试从 home.ts 访问这些数据时未定义,因为它没有等待为要完成的功能。我尝试使用 await async 等待,但仍然无法正常工作。
这是我的代码:
home.ts
async addMarkers(){
console.log("before await");
let dataMarkers:MarkerOptions[] = await this.wcService.getWcData();
console.log("after de await"); //executed before getWcData response
console.log(dataMarkers); //Here is undefined
...`
wcService.ts
async getWcData() {
let wcsCollection = this.db.collection<Wc>('wcs');
wcsCollection.valueChanges().subscribe(res=>{
res.forEach(element => {
this.addWcToMarkerOptionsArray(element.latitude,element.longitude,element);
console.log("added element to this.markersWc");
});
console.log("returning results: " + this.markersWc);
return this.markersWc;
});
}
控制台日志按以下顺序显示:
"Before await"
"After await"
"returning results...."
如何强制函数等待结果?
非常感谢!
【问题讨论】:
标签: angular typescript firebase ionic-framework