Ale*_*Dev 0 javascript typescript angular
我的问题很简单......考虑以下角度方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
如何在返回row3数组之前等待订阅?
非常感谢!
async/await只能与Promises 一起使用。因此,要使其在您的示例中起作用,您必须将Observable(s)更改为Promise(s)。
好消息是,您可以简单地使用toPromiseAPIObservable来做到这一点。
您必须做的另一件事是将您的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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5589 次 |
| 最近记录: |