在NodeJS中是否有可能实现一个setTimeout
版本,该代码在最后一行代码完成后不会阻止该进程退出?
即。条件setTimeout
只会触发回调函数,只要进程仍在运行。
实际例子:
当实现一个通过设置一些超时来初始化自己的库时,你会希望一旦应用程序完成,你就不需要对该库进行显式调用以清除所有超时,并让应用程序无论如何都会关闭。
答案 0 :(得分:4)
如果您希望维护对所有未完成计时器的引用,然后在应用程序退出过程中清除它们,则可以使用clearTimeout
,但在节点中使用unref()
{{会容易得多3}}。结果是任何unref
ed计时器都不会阻止Node退出。
例如:
var to = setTimeout(myFunction,delay);
to.unref();
也适用于setInterval
setInterval(myFunction,delay).unref();
答案 1 :(得分:0)
如果查看setTimeout的文档,您会注意到它返回一个timeoutObject,可用于通过clearTimeout(obj)
取消超时。
所以你可以做的是通过存储他们的id对象来跟踪你创建的所有超时。然后,您可以随时结束所有超时。
如果您只是想退出进程,忽略其他所有内容,则只需使用process.exit()
(如果要返回非零错误代码,则传递参数)。