javascript - ForEach 在函数完成后执行
问题描述
我的代码有问题。我需要检查 cutlist 数组中是否有一个带有 material_id 的项目在材料数据库中不存在,但 forEach 中的代码在函数完成后执行。
const errors: string[] = [];
await orderData.cutlist.forEach(async cutlist => {
const doesMaterialExist = await this.materialsRepository.findMaterialById(
cutlist.material_id,
);
if (!doesMaterialExist) {
errors.push('Material does not exist');
}
console.log('1')
});
console.log('2')
if (errors.length > 0) {
throw new AppError('There is a invalid material in cutlists', 404);
}
执行此代码后我的控制台是 2 -> 1。它在 ForEach 循环之前检查 errors.length
解决方案
您不能await
在 forEach 循环之前使用。有办法做到这一点,但在你的情况下,这不是必需的。
您可以转换forEach
为for
循环,您的问题将得到解决。
const errors: string[] = [];
for(var cutlist in orderData.cutlist){
const doesMaterialExist = await this.materialsRepository.findMaterialById(
cutlist.material_id,
);
if (!doesMaterialExist) {
errors.push('Material does not exist');
}
console.log('1')
};
console.log('2')
if (errors.length > 0) {
throw new AppError('There is a invalid material in cutlists', 404);
}
推荐阅读
- android - android - 从@Bindable POJO 属性更新组件元素 - 数据绑定
- r - 如果样本出现在另一个数据集的行中,如何有条件地计数和记录?
- amazon-product-api - 我想使用 AWS API 从关键字中获取产品或 asins
- flutter - 我的颤振项目中的依赖不兼容
- android - Vimeo 和 Tus:上传卡在几秒钟后在 Android 上没有显示错误
- javascript - 如何在信用卡表格中验证到期日期?
- node.js - node.js“使用不推荐使用的字段:'series'”同时使用c3图表制作器
- html - 多次点击 Bootstrap 下拉菜单
- java - Java中jsp显示列表的问题
- javascript - 以编程方式从 iCloud 提取备份消息和/或已安装的应用程序列表