首页 > 解决方案 > 包含 Promise 的 forEach 循环的 Promise

问题描述

我已经嵌套了 forEach 循环,其中一个循环包含另一个 await 调用。我希望我的函数 doSomething 仅在嵌套循环完成后执行。到目前为止, doSomething() 首先被执行。

    entity.forEach(function (dataItem) {
        userParams.forEach(async function (userParamItem) {
                const Marks = await _fetchMark(req, dataItem.MKTUNITID);
                //do some manipulation to Marks

            }

        }
    });
});

做一点事();

标签: javascriptnode.jsforeachasync-await

解决方案


forEach在这种情况下可能有点棘手,您可以简单地使用for循环,因为它们不会跳转到下一个项目,直到所有承诺都没有解决

for(i =0; i < entity.length; i++) 
{
    let dataItem = entity[i]
    for(j =0; j < userParams.length; j++)
    {
        
        let userParamItem = userParams[i]
        const Marks = await _fetchMark(req, dataItem.MKTUNITID);
        //do some manipulation to Marks
    }
}

推荐阅读