Возникли проблемы при получении результата от рекурсива для l oop. Я делаю рекурсию, чтобы получить «автомобили» и «корабли» для «myArray», но он не ждет. Поэтому, когда я нажимаю, чтобы загрузить json, json приходит без «машин» и «кораблей». В консоли я вижу, что рекурсия заканчивается после загрузки.
Любые идеи, как можно ожидать получения результата от рекурсивного для l oop и только потом начать загрузку?
myservice.ts ----------------------------------------- -----------------------------
public async callData(): Promise<myType> {
return new Promise<myType>(async (resolve, reject)=>{
this.toDownload.myArray = await this.loop(this.toDownload.myArray);
resolve(this.toDownload);
});
}
private async loop(myArray:[]): Promise<myArray[]> {
return new Promise<myArray[]>(async (resolve, reject) => {
for (let i: number = 0; i < myArray.length; i++) {
myArray[i].id = .....
myArray[i].cars = this.carsArray.find(....)
myArray[i].ships = this.shipArray.find(....)
if (myArray[i].subMyArray.length !== 0) {
await this.loop(myArray[i].subMyArray);
}
}
resolve(myArray);
});
}
mycomponent.ts-----------------------------------------------------------------
public async donwload(){
this.myArray = await myservice.callData();
// this.myArray comes without .cars and .ships
const jsonStr: string = JSON.stringify(this.myArray);
}
В консоли вы бы что-то вроде этого, если поместить console.log в каждый метод:
1
2
3
(15) 2 // другими словами вызывая снова метод l oop 15 раз