javascript - 如何使 forEach 循环同步
问题描述
我这里有一个异步问题。forEach
返回时仍在运行,因此res.json({ errors });
不会发现所有错误。我该如何处理?
router.post('/new/user', async function (req, res, next) {
const validateEmail = async (email) => {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
};
const reqBody = { email, password };
let errors = {};
Object.keys(reqBody).forEach(async (field) => {
if (field === 'email' && validateEmail(await reqBody[field])) {
errors = { ...errors, [field]: 'Not a valid Email' };
}
console.log(3);
if (field === 'password' && password !== '' && password < 4) {
errors = { ...errors, [field]: 'Password too short' };
}
});
if (Object.keys(errors).length > 0) {
res.json({ errors });
}
}
解决方案
用于for...of
循环遍历数组元素,您可以使用await
.
for(const field of Object.keys(reqBody)){
//Code using await
}
推荐阅读
- javascript - 提交按钮后立即加载和禁用图表
- javascript - 如何用 Vuex/Vue 处理异步数据检索
- python - odoo 中的 Qweb 自定义标头
- vba - 使用高级过滤器填充用户表单中的列表框
- node.js - 如何将数据从节点服务器传递到 Angular 服务?
- django - base.html 中的 Django 脆表单
- loops - 如何在 Jinja2 中循环 Kannel 配置
- python - 如何获取 UTF-8 格式的电子邮件?
- android - Android shell 使用应用程序权限
- angular - 如何使用 AWS Apollo Angular 在 ionic 3 中实现离线支持?