首页 > 解决方案 > Node.js setTimeout 未退出

问题描述

我正在编写一个程序,该程序将尝试解决一个难题,但对 CPU 时间的花费有限制,并尝试使用 setTimeout 来实现这一点,该 setTimeout 在经过一定时间后退出程序,但什么也没发生时间用完了。将其归结为一个简单的测试用例:

setTimeout(function () {
    process.exit(1)
}, 10)
while (1) {}

而不是在十毫秒后退出,上面只是保持挂起。

我究竟做错了什么?

标签: javascriptnode.jssettimeout

解决方案


javascript是异步的,这意味着一次一个任务。JS 只会在当前任务完成或需要额外操作(等待响应、I/O 操作等)时切换到另一个任务

由于 while 循环永远不会完成并且不需要其他操作,它只会永远运行并且永远不会切换到 setTimeout。

更多细节:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop


推荐阅读