为什么Array.forEach()没有阻止中间件?

时间:2019-08-08 11:15:59

标签: node.js express

我知道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")之前执行。但这不是行为。所以有些事我不明白。

1 个答案:

答案 0 :(得分:2)

要回答完整的问题,我们需要查看您的代码,但要回答最基本的javascript问题,return内的forEach仅从forEach返回,而不是从您的外部中间件功能。因此,中间件函数中的所有内容仍在forEach之后执行。

同样,不可能提供真正的解决方案,但是通常不用forEach来进行这类检查。

const ret = [1,2,3].some(e => e === '<yourCondition>');
res.send(ret);