繁体   English   中英

在 nodjs 和 javascript 中完成 forloop 后的返回值

[英]return value after complete the forloop in nodjs and javascript

我有这个函数来返回字符串数组。

 async GetAllPermissonsByRoles(id) {
    let model: string[] = [];
    try {
        id.forEach(async (role) => {
            let permission = await RolePermissionModel.find({ roleId: role._id })
                .populate({
                    path: 'permissionId',
                    model: 'Permission'
                });
            permission.forEach((elment) => {
                model.push(elment.permissionId);
            });
        })
    } catch (error) { }

    return model;
}

但是我对这段代码有一个问题,在这个函数中不等待完成forLoop然后return model ,循环尚未完成但返回值。

有什么问题 ? 我怎样才能解决这个问题?

更新 :

我写了这段代码,但仍然有这个问题:

  async GetAllPermissonsByRoles(ids) {
    let model: string[] = [];
    try {

        await Promise.all(ids.map(async (role) => {
            let permission = await RolePermissionModel.find({ roleId: role._id })
                .populate({
                    path: 'permissionId',
                    model: 'Permission'
                });
            await Promise.all(permission.map(async (permission) => {
                permission.forEach((elment) => {
                    model.push(elment.permissionId);
                });
            }))
        }))
    } catch (error) { }

    return model;
}

您不能将 forEach 与 async/await 一起使用。 请将此作为解释async await with forEach

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM