我的问题很简单...考虑以下角度方法:
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
数组之前等待订阅?
非常感谢!
答案 0 :(得分:0)
尝试一下:
'a string'
答案 1 :(得分:0)
async
/ await
仅适用于Promise
个。因此,要使其在您的示例中起作用,您必须将Observable
(s)更改为Promise
(s)。
好事是,您可以简单地在toPromise
上使用Observable
API。
您要做的另一件事是将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;
}