首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angular中等待订阅

如何在angular中等待订阅
EN

Stack Overflow用户
提问于 2018-10-05 03:49:28
回答 2查看 5.7K关注 0票数 0

我的问题很简单。考虑以下角度方法:

代码语言:javascript
复制
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数组?

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-10-05 03:58:11

async/await只能与Promises一起使用,所以要在示例中使用它,您必须将Observable(s)改为Promise(s)。

不过,好消息是,您只需在Observable上使用toPromise应用程序接口就可以做到这一点。

您必须做的另一件事是将您的fillOrderHeader函数声明为async。为此,您必须awaitthis.orderService.getAllOrdersHeaders().toPromise()headerDoc.get().toPromise()的调用

试试这个:

代码语言:javascript
复制
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;
}
票数 5
EN

Stack Overflow用户

发布于 2018-10-05 03:56:07

试试这个:

代码语言:javascript
复制
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;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52654147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档