在NodeJS中是否可以实现setTimeout的版本,该版本不会在最后一行代码完成后阻止进程退出?

也就是说,条件setTimeout的类型仅在进程仍在运行时才会触发回调函数。

实际示例:

当实现通过设置一些超时来初始化自身的库时,您希望应用程序完成后就无需对该库进行显式调用以清除所有超时,并且无论如何都可以关闭应用程序。

最佳答案

如果要维护对所有未完成计时器的引用,然后在应用程序退出过程中将其清除,则可以使用clearTimeout,但是在节点中使用unref() Node doc on unref要容易得多。结果是任何unref ed计时器都不会阻止Node退出。

例如:

var to = setTimeout(myFunction,delay);
to.unref();


也可以与setInterval一起使用

setInterval(myFunction,delay).unref();

09-28 05:38