gpt4 book ai didi

javascript - 等待 for 循环结束以继续 JavaScript 中的函数

转载 作者:行者123 更新时间:2023-12-02 21:31:58 26 4
gpt4 key购买 nike

我有一个问题!我希望函数 getMealSummary() 在 for 循环 完成后返回(我没有包含返回键,因为该函数非常大,我只是有一个疑问在本节中)。

如何使用 async/await 或 Promise 来做到这一点?

谢谢

    export const getMealMicroSummaryHelper = async function getMealSummary(array, populatedFoods, customMeasurements, isRecipe,expertId){
var [totalZinc, totalCalcium,totalAlphaCarotene,totalBetaCarotene,totalCholine,totalCopper,totalBetaCrypto,totalFluoride,totalVitaminB9,totalIron,
totalLutein,totalLycopene,totalMagnesium,totalManganese,totalNiacin,totalVitaminB5,totalPhosphorus,totalPotassium,totalRetinol,totalRiboflavin,
totalSelenium,totalSodium,totalTheobromine,totalVitaminA,totalVitaminB12,totalVitaminB6,totalVitaminC,totalVitaminD,totalVitaminD2,totalVitaminD3,
totalVitaminE,totalThiamin] = [0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];

let recipesArray = []

for(let i = 0; i < populatedFoods.length; i++){
if(populatedFoods[i].foodType === 4){
await apiCall("get",`/api/experts/${expertId}/recipes/${populatedFoods[i]._id}`)
.then(recipe =>{
recipesArray.push(recipe)
})
.catch((err)=>console.log(err))
}

最佳答案

您可以使用 map() 的组合和 Promise.all对于这样的:

async function getMealSummary(array, populatedFoods, customMeasurements, isRecipe, expertId) {
try {

let recipesArray = await Promise.all(
populatedFoods.map(async populatedFoods => {
if (populatedFoods[i].foodType === 4) {
let recipe = await apiCall("get", `/api/experts/${expertId}/recipes/${populatedFoods[i]._id}`)
return recipe;
}
})
)

} catch (err) {
console.log(err)
}
}

这只是一个简单的版本,旨在为您提供基本概念。我没有包含您在上面 recipesArray 声明的所有变量。这些需要根据需要包含在内。

关于javascript - 等待 for 循环结束以继续 JavaScript 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60602174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com