我有一个奇怪的问题。我有一个带有映射的简单函数,该映射试图初始化相同对象类型的数组。但是,在迭代完成之后它为空,但是当我进行控制台日志记录时,它将打印所有对象数组。
组件中的功能
对象:
dailyStats: DailyStats[] = [];
-功能
dailyStatistics() {
this.reportingService.dailyStats(this.toDate, this.fromDate).subscribe( r => {
r.map(res => this.dailyStats.push(res)); //console log prints the whole array all of them!
},
error => {
console.log('Failed to get Stats' + error);
},
() => {
console.log('Done getting daily stats.');
});
}
showDailyStats() {
console.log('length' + this.dailyStats.length); // length 0
for (const value of this.dailyStats) {
console.log('average' + value.average);
//this.lineChartLabels.push(value.date.toISOString());
//this.lineChartData.push({ data: [value.average], label: 'Average' });
}
}
您可以直接在subscribe
中分配异步调用的结果,而无需使用map
方法,然后调用方法showDailyStats
:
.subscribe( r => {
this.dailyStats = r; //console log prints the whole array all of them!
this.showDailyStats();
}
如果在dailyStatistics之后调用showDailyStats方法,则必须使用async / await等待数据进入数组,然后再访问其内容。