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

我不明白为什么代码在返回和res.send()被调用后仍然继续运行。 这是一个GIST来帮助理解。

更新:

那么经过社区的帮助现在发现,明白问题就在于res.send(); 发生asynchronous,与console.log()并行。

在这个特定的情况下,解决scheme是包装在if/else

感谢@Tom和@PaulPro!

Hi! 如果您使用以下代码片段,则会在控制台上打印文本(请注意res.send旁边没有任何return )。

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

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

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

之所以你可以看到Hi! 首先是res.send函数是asynchronous执行的,即方法发送响应在JavaScript事件循环中排队,请求处理函数继续执行,并用Hi!调用console.log Hi! 论据。

我希望这会有所帮助。

那么经过社区的帮助现在发现,明白问题就在于res.send(); 发生asynchronous,与console.log()并行。 在这个特定的情况下,解决方法是包装在if(){} else {}中。 感谢@Tom和@PaulPro!