为什么代码在'return res.send();'之后仍然继续运行

Tha*_*s P 6 javascript node.js express

我不明白为什么代码继续运行,即使在return和res.send()被调用之后.这是一个有助于理解的GIST.

更新:

好了,在社区的帮助下现在发现并了解问题是返回res.send();发生异步,并行console.log().

在这种特定情况下,解决方案是内部包装if/else.

感谢@Tom和@PaulPro!

Tom*_*Tom 15

Hi!如果使用下面的代码(注意,没有文本打印在控制台上return旁边res.send).

app.get('/asd', function (req, res) {
  res.send('OK');
  console.log('Hi!');
});
Run Code Online (Sandbox Code Playgroud)

以下代码片段不会Hi!在控制台上打印,因为请求处理函数随res.send('OK');表达式一起结束

app.get('/asd', function (req, res) {
  return res.send('OK');
  console.log('Hi!');
});
Run Code Online (Sandbox Code Playgroud)

您可以Hi!在第一个实例中看到的原因是该res.send函数是异步执行的,即方法发送响应在JavaScript事件循环中排队,请求处理函数继续执行并console.log使用Hi!参数调用.

我希望这会有所帮助.