首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非阻塞setTimeout

非阻塞setTimeout
EN

Stack Overflow用户
提问于 2015-10-25 02:22:05
回答 2查看 3.4K关注 0票数 1

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

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

实例:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-25 02:54:24

如果希望维护对所有未执行定时器的引用,然后清除它们作为应用程序退出过程的一部分,可以使用clearTimeout,但在节点中使用unref() unref要容易得多。其效果是,任何unrefed定时器都不会阻止节点退出。

例如:

代码语言:javascript
复制
var to = setTimeout(myFunction,delay);
to.unref();

也与setInterval一起工作

代码语言:javascript
复制
setInterval(myFunction,delay).unref();
票数 6
EN

Stack Overflow用户

发布于 2015-10-25 02:38:33

如果您查看setTimeout的文档,您将注意到它返回一个timeoutObject,该timeoutObject可用于通过clearTimeout(obj)取消超时。

因此,您可以做的是通过存储id对象来跟踪所创建的所有超时。然后,您可以结束所有的超时,无论何时你想。

如果您只想退出进程,忽略所有其他内容,则只需使用process.exit() (如果要返回一个非零错误代码,则传递一个参数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33325544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档