我的问题很简单。考虑以下角度方法:
fillOrderHeader() {
let rows3:Array<OrderHeader>= new Array<OrderHeader>();
this.orderService.getAllOrdersHeaders().subscribe(headerList=>{
headerList.forEach(headerDoc=>{
headerDoc.get().subscribe(header=>{
let headerMetadata:OrderHeader= new OrderHeader();
headerMetadata.clientName= header.data().clientName;
headerMetadata.agencyName=header.data().agencyName;
rows3.push(headerMetadata);
});
})
});
return rows3;
}如何等待订阅后再返回row3数组?
非常感谢!
发布于 2018-10-05 03:58:11
async/await只能与Promises一起使用,所以要在示例中使用它,您必须将Observable(s)改为Promise(s)。
不过,好消息是,您只需在Observable上使用toPromise应用程序接口就可以做到这一点。
您必须做的另一件事是将您的fillOrderHeader函数声明为async。为此,您必须await对this.orderService.getAllOrdersHeaders().toPromise()和headerDoc.get().toPromise()的调用
试试这个:
async fillOrderHeader() {
let rows3: Array<OrderHeader> = new Array<OrderHeader>();
const headerList = await this.orderService.getAllOrdersHeaders().toPromise();
for(let headerDoc of headerList) {
const header = await headerDoc.get().toPromise();
let headerMetadata: OrderHeader = new OrderHeader();
headerMetadata.clientName = header.data().clientName;
headerMetadata.agencyName = header.data().agencyName;
rows3.push(headerMetadata);
}
return rows3;
}发布于 2018-10-05 03:56:07
试试这个:
async fillOrderHeader() {
let rows3: Array<OrderHeader>= new Array<OrderHeader>();
let headerList = await this.orderService.getAllOrdersHeaders().toPromise();
for(let headerDoc of headerList){
let header = await headerDoc.get().toPromise();
let headerMetadata: OrderHeader = new OrderHeader();
headerMetadata.clientName = header.data().clientName;
headerMetadata.agencyName = header.data().agencyName;
rows3.push(headerMetadata);
}
return rows3;
}https://stackoverflow.com/questions/52654147
复制相似问题