在NodeJS中是否有可能实现setTimeout的一个版本,一旦最后一行代码完成,就不会阻止进程退出?
也就是说,只要进程仍在运行,只会触发回调函数的条件setTimeout类型。
实例:
当实现一个通过设置一些超时来初始化自身的库时,您可能希望,一旦应用程序完成,您就不需要对该库进行显式调用就可以清除所有超时,并让应用程序关闭。
发布于 2015-10-25 02:54:24
如果希望维护对所有未执行定时器的引用,然后清除它们作为应用程序退出过程的一部分,可以使用clearTimeout,但在节点中使用unref() unref要容易得多。其效果是,任何unrefed定时器都不会阻止节点退出。
例如:
var to = setTimeout(myFunction,delay);
to.unref();也与setInterval一起工作
setInterval(myFunction,delay).unref();发布于 2015-10-25 02:38:33
如果您查看setTimeout的文档,您将注意到它返回一个timeoutObject,该timeoutObject可用于通过clearTimeout(obj)取消超时。
因此,您可以做的是通过存储id对象来跟踪所创建的所有超时。然后,您可以结束所有的超时,无论何时你想。
如果您只想退出进程,忽略所有其他内容,则只需使用process.exit() (如果要返回一个非零错误代码,则传递一个参数)。
https://stackoverflow.com/questions/33325544
复制相似问题