栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

node.js进程如何知道何时停止?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

node.js进程如何知道何时停止?

节点跟踪所有未完成的工作请求。您的fs.writefile()调用为I / O创建工作请求,并将您的回调添加到该请求。节点在启动I /
O活动的同时将工作请求保存到其表中。到达函数末尾时,代码执行将退出。(但您的内存/变量/等仍然存在)

稍后,I / O完成,并且节点将工作请求从表中取出。它看到附加到请求的回调,因此使用I /
O请求的结果调用该函数。您的全局数据仍然存在,并且闭包中的任何变量仍然存在,因此在您的代码中似乎从未停止过。

如果您什么也不做,不要再发出任何请求,那么当您从函数返回时,节点将停止,因为这样队列中将不再有任何剩余的请求。

因此,节点“知道”继续运行,因为它跟踪其表中的活动工作请求,并且直到所有排队的工作都完成并且这些表为空时才会停止。

请注意,“排队工作”可能包括诸如等待计时器或等待网络数据到达之类的事情。您发出一个请求,要求您说“如果以后有事请给我打电话”。

setTimeout()也是一个工作请求(如果您斜视一下)。使用计时器,您知道会发生什么以及何时发生。使用setTimeout()只会发生一个“事情”。节点将仅对您的回调进行一次调用,然后“忘记”工作请求。相反,如果您使用setInterval(),则创建了一个持久性工作请求。节点将“保留”其表中的工作请求,并将反复调用回调,直到您取消该请求为止。

net.Server.listen()是另一个工作请求,它是一个持久性工作请求。您不知道何时调用回调或调用多少次,因为这取决于连接到服务器的远程客户端。节点将工作请求保持在其表中,直到您取消该请求为止。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号