Я пытаюсь загрузить данные в таблицу на моем веб-интерфейсе, но данные, которые мне нужно предоставить, поступают из API, который я вызываю и сохраняю в массиве, например:
ngOnInit() {
this.jsonStored = [];
const observables = this.data.map(data =>
this.time.getPunchDataWeek(data.id)
);
forkJoin(observables).subscribe(
results => {
this.jsonStored.push(results);
},
err => {
console.error(err);
},
() => {
this.totalToday = this.time.getTotalEmpToday(this.jsonStored[0][0]);
this.totalWeek = this.time.getTotalEmpWeek(this.jsonStored[0][0]);
}
);
}
Я знаю, что это происходит асинхронно, поэтому мне нужно дождаться завершения запроса, чтобы передать мой массив jsonStored в другие функции для обработки данных и загрузки их в мою таблицу на внешнем интерфейсе. Я полагаю, что должен сделать это с помощью asyn c -wait, но я не уверен, правильно ли я это делаю.
Я только начинаю писать свой код, но после тестирования я получаю эту ошибку
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
Пока это мой код
async getTotalData(data: any) {
await data;
let i: string | number;
for (i in data.length) { // <----------------- ERROR REFERS TO THIS LINE
console.log(i);
console.log(data[i]);
}
return 0;
}
async getActual(day: string | number | Date) {
day = new Date(day);
let response = await this.time.getTotalData(this.jsonStored[0]);
return 0;
}
async ngOnInit() {
for (this.i in this.dash.weekdays) {
this.SHIFTSTATS_DATA.push({
day: this.dash.weekdays[this.i],
requested: 2,
provided: 2,
ontime: 2,
actual: await this.dash.getActual(new Date())
});
}
}