首页 > 解决方案 > 如何从角度的复杂方法返回 ArrayList()

问题描述

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

getAllOrdersHeaders(){
    this.getAllOrdersIds().subscribe(idList=>{
      idList.forEach(id=>{
        this.ordersCollection.doc(id).collection('metadata').doc('metadata').get()
        .subscribe(metadata=>{
          console.log(metadata.data());
        });
      })
    });
  }

前面的方法,遍历一个 Firebase 文档的 id 列表,以便找到文档的元信息。

问题是:如何返回这些元数据对象的列表,而不是在控制台上打印它们?

标签: javascriptangulartypescript

解决方案


你可以使用回调

  let array = [] // global variable

 // declaring callback function outside
 addMetaData = (val) => {
   array.push(val);
  }

// Now use getAllorders function

 getAllOrdersHeaders(callbackFunction){
 this.getAllOrdersIds().subscribe(idList=>{
     idList.forEach(id=>{
        this.ordersCollection.doc(id).collection('metadata').doc('metadata').get()
          .subscribe(metadata=>{
              callbackFunction(metadata.data()); // whenever the data is fetched you are calling the function to store data

       });
     })
   });
} 

 // Now call getAllOrders with callbackFunction ie addMetaData

 getAllOrders(addMetaData);

// the result will be stored in the array variable declared on the top

推荐阅读