async function fnGetVehicleList(makeCode, responseModels){
let vehicleListData = [];
await responseModels.Table.forEach(async (model) => {
const vehicleDetailResponse = await getVehicleDetails('2024',makeCode, model.Code); // API call. This is also an Async function
await vehicleDetailResponse.Table.forEach(async (vehicleItem)=>{
await vehicleListData.push(vehicleItem);
});
});
return await vehicleListData;
}
这里,vehicleListData 不会等待两个 forEach 循环都被执行。
它会一直等到,它对responseModels forEach 循环中的所有项目进行API 调用。但是,一旦进行 API 调用,它就不会等待第二个 forEach 循环,即 (vehicleDetailResponse.Table.forEach),而只是返回vehicleListData,它是函数中的空数据。
请让我知道如何等待第二个 forEach 循环也被执行,然后函数返回响应
forEach
不返回 Promise。您应该重写代码以使用 Promise.all
-
async function fnGetVehicleList(makeCode, responseModels) {
const all = await Promise.all(responseModels.Table.map(model =>
getVehicleDetails('2024', makeCode, model.Code)
))
return all.flat(1)
}