[英]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.