Невозможно добавить элементы в массив в машинописи с помощью диаграммы. js и диаграмм начальной загрузки - PullRequest
0 голосов
/ 15 марта 2020

У меня странная проблема. У меня есть простая функция с картой, которая пыталась инициализировать массив того же типа объекта. Однако он пуст после завершения итерации, но когда я консольный журнал, он печатает весь массив объектов.

функция в компоненте

объект:

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' });
        }

    }

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Если вы вызываете метод showDailyStats после dailyStatistics, вы должны использовать async / await для ожидания поступления данных в массив, прежде чем получить доступ к его содержимому.

0 голосов
/ 15 марта 2020

Вы можете присвоить результат асинхронного вызова непосредственно в subscribe без использования метода map, а затем вызвать свой метод showDailyStats:

.subscribe( r => {
    this.dailyStats = r; //console log prints the whole array all of them!
    this.showDailyStats();
}
...