在NodeJS中是否可以实现setTimeout
的版本,该版本不会在最后一行代码完成后阻止进程退出?
也就是说,条件setTimeout
的类型仅在进程仍在运行时才会触发回调函数。
实际示例:
当实现通过设置一些超时来初始化自身的库时,您希望应用程序完成后就无需对该库进行显式调用以清除所有超时,并且无论如何都可以关闭应用程序。
最佳答案
如果要维护对所有未完成计时器的引用,然后在应用程序退出过程中将其清除,则可以使用clearTimeout
,但是在节点中使用unref()
Node doc on unref
要容易得多。结果是任何unref
ed计时器都不会阻止Node退出。
例如:
var to = setTimeout(myFunction,delay);
to.unref();
也可以与setInterval一起使用
setInterval(myFunction,delay).unref();