Node.js setTimeout 未退出

Node.js setTimeout not exiting

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

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

上面的代码不会在 10 毫秒后退出,而是保持挂起状态。

我做错了什么?

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

因为 while 循环永远不会结束并且不需要其他操作,它只会永远 运行 并且永远不会切换到 setTimeout。

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