gpt4 book ai didi

node.js - 为什么我可以在 "res.send"之后执行代码?

转载 作者:IT老高 更新时间:2023-10-28 21:51:04 33 4
gpt4 key购买 nike

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

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

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

还有什么我可能会遗漏的东西吗?

最佳答案

当然 end 会结束 HTTP 响应,但它不会对您的代码做任何特殊的事情。

即使您结束了回复,您也可以继续做其他事情。

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

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

这种行为与其他传统框架(PHP、ASP 等)不同,后者为 HTTP 请求分配一个线程并在响应结束时终止该线程。如果您调用 ASP 的 Response.End 之类的等效函数,线程将终止并且您的代码将停止运行。在 Node 中,没有线程可以停止。 reqres 不会再触发任何事件,但回调中的代码可以自由继续运行(只要它不尝试调用 res 需要打开有效响应)。

关于node.js - 为什么我可以在 "res.send"之后执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180502/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com