如何在Node.js中触发超时function?

我想触发setTimeoutcallback函数,但似乎不工作。 有什么问题?

var fs = require("fs"); // set timeout callback setTimeout(function(){ console.log("5000ms timeout"); process.exit(0); }, 5000 ); // do something more than 5000ms while(true) { var stats = fs.statSync("foo"); console.log("while statement running..."); } 

当我运行这个,5秒后,程序仍在运行

while(true)是一个紧密的旋转循环,防止任何其他asynchronouscallback触发。 不要在单线程环境中执行此操作。 您可以使用setInterval而不是while(true)来代替。

Javascript是严格单线程的。 (工人除外)

只要你的while循环运行, 其他的Javascript代码根本不能执行 ,包括你的setTimeoutcallback。

相比之下,调用setInterval只是安排一个callback周期性地运行,但是不会暂时阻塞该线程。

我不熟悉node.js,但通常我会期望while循环继续运行。 JS被阻塞。 为了停止这个循环,需要将条件评估为假。 直到循环停止,没有别的将执行。