非阻塞setTimeout

vit*_*y-t 1 javascript settimeout node.js

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

也就是说setTimeout,只有在进程仍在运行的情况下,才会触发回调函数的条件类型。

实际示例:

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

bar*_*son 5

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

例如:

var to = setTimeout(myFunction,delay);
to.unref();
Run Code Online (Sandbox Code Playgroud)

也可以与setInterval一起使用

setInterval(myFunction,delay).unref();
Run Code Online (Sandbox Code Playgroud)