我目前正在尝试在ReactJS + ExpressJS中实现简单的CRUD操作。我有一个异步 onSubmit 方法来处理表单提交。
下面的 foreach
循环应包含一些数组元素检查,如果匿名函数返回 false,应用程序应退出 onSubmit
,但 try-catch
block 设法在 foreach
完成之前执行。
由于我的 foreach
循环中没有任何真正需要 await
的内容,因此有没有办法“等待”直到它完全完成并执行代码在 try-catch
block 内同时保持 onSubmit
方法异步?
onSubmit = async (e) => {
e.preventDefault();
if (something) {
return false;
}
// This foreach gets executed after the try-catch below, but I want it to execute first
someArr.forEach(item => {
if (item.arr === undefined || item.arr.length == 0) {
return false;
}
});
try {
// This has some await axios.post() calls...
} catch { }
}
最佳答案
return
forEach
内的声明回调不会阻止 try catch 评估,因为 return
语句位于回调内部,因此它从回调返回,而不是外部 onSubmit
功能。
如果我理解正确的话,目的是从 onSubmit
返回如果数组中的任何一项满足条件:
(item.arr === undefined || item.arr.length == 0)
如果这是正确的,您可以使用 Array.prototype.some 重写它:
onSubmit = async (e) => {
e.preventDefault();
if (something) {
return false;
}
const shouldReturn = someArr.some(item => item.arr === undefined || item.arr.length === 0);
if (shouldReturn) {
return;
}
try {
// This has some await axios.post() calls...
} catch { }
}
关于javascript - 防止代码在 forEach 之后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57132189/