node.js – Node/Express:为什么我可以在“res.send”之后执行代码?

我想知道下面的代码的行为背后的机制是:

res.send(200,{ data: 'test data' });
console.log('still here...');

我的理解是res.send不返回该函数,但是关闭连接/结束请求。这可以解释为什么我仍然可以在res.send命令后执行代码(我通过快速源查看它,似乎不是一个异步函数)。

还有别的东西在玩,我可能会失踪?

解决方法

当然end结束HTTP响应,但它不做任何特殊的代码

即使在您结束回复后,您仍可继续执行其他操作。

你不能做的,但是,做任何有用的res。由于响应结束,您无法向其写入更多数据。

res.send(...);
res.write('more stuff'); // throws an error since res is Now closed

这种行为不同于其他传统的框架(PHP,ASP等),它们将线程分配给HTTP请求,并在响应结束时终止线程。如果你调用一个等效的函数,如ASP的Response.End,线程终止,你的代码停止运行。在节点中,没有线程停止。 req和res将不会触发任何更多的事件,但是回调中的代码可以自由地继续运行(只要它不尝试调用需要打开有效响应的res方法)。

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...