Javascript 如何获取第一个值和另一个subscribe方法

Javascript 如何获取第一个值和另一个subscribe方法,javascript,angular,angularfire2,Javascript,Angular,Angularfire2,我开发了一个简单的angular 7 web应用程序。firebase数据库连接, 我正在尝试使用subscribe方法将第一个列表存储在一个数组中,然后将console.log存储到该数组中。 但在获取数据之前,数组将在一段时间后打印未定义的数据。 代码如何等待响应完成,然后打印该数组 从'@angular/core'导入{Injectable}; 从“angularfire2/database”导入{AngularFireList,AngularFireDatabase}; @注射的({

我开发了一个简单的angular 7 web应用程序。firebase数据库连接, 我正在尝试使用subscribe方法将第一个列表存储在一个数组中,然后将console.log存储到该数组中。 但在获取数据之前,数组将在一段时间后打印未定义的数据。 代码如何等待响应完成,然后打印该数组

从'@angular/core'导入{Injectable};
从“angularfire2/database”导入{AngularFireList,AngularFireDatabase};
@注射的({
providedIn:'根'
})
出口级服装服务{
构造函数(公共firebase:AngularFireDatabase){}
GetJoinAddresses(){
返回此.firebase.list('makavana-tailor/dresses')。快照更改()
}

}
当前代码的问题是,您在阵列有机会填充之前就显示了阵列

您知道,当调用
subscribe
函数时,它会被填充

因此,最简单的方法是通过在
订阅
调用中移动
控制台.log
来修改代码:

ngOnInit() {
  this.getAllDresses();
}

getAllDresses(){
  this.dresses.getJoinDresses().subscribe(actions => {
    this.dressArray = actions.map(action => ({
      $key: action.key,
      ...action.payload.val()
    }));
    console.log(this.dressArray);
  })
}

你的题目不清楚。但是,如果我正确理解了您的问题,那么您在处理异步调用时将面临一个问题。您必须在subscribe中打印
console.log(this.dressArray)
,或者从
getAllAddresses
返回可观察数据,并在
onInit()中订阅它

代码:

ngOnInit() {
    this.getAllDresses().subscribe(data => {
         this.dressArray = data;
         console.log(this.dressArray)
    });
 }

getAllDresses(){
    return this.dresses.getJoinDresses().pipe(map(actions => {
      return actions.map(action => {
        return {
          $key: action.key,
          ...action.payload.val()
        }
      })
    }))
  }

你的题目不清楚。但是,如果我正确理解了您的问题,那么您在处理异步调用时将面临一个问题。您必须在subscribe中打印
console.log(this.dressArray)
,或者从
getAllAddresses
返回可观察数据,并在
onInit()中订阅它