我知道Array.forEach是同步的。
但是我有这段代码:
function middleware (req, res, next) {
Array.forEach(
Array.forEach(
if(true) { return next(); }
)
)
return res.send("false");
}
// next()
function isTrue (req, res) {
return res.send("true");
}
每次执行它时,它都会发送两个标头。首先是isTrue函数头,然后是中间件函数头。
我知道,如果Array.forEach()
是同步的,则应在res.send("false")
之前执行。但这不是行为。所以有些事我不明白。
答案 0 :(得分:2)
要回答完整的问题,我们需要查看您的代码,但要回答最基本的javascript问题,return
内的forEach
仅从forEach
返回,而不是从您的外部中间件功能。因此,中间件函数中的所有内容仍在forEach
之后执行。
同样,不可能提供真正的解决方案,但是通常不用forEach
来进行这类检查。
const ret = [1,2,3].some(e => e === '<yourCondition>');
res.send(ret);