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