为什么代码在“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!