setTimeout(function(){
console.log('hari');
process.exit()
}, 300);
for(i=0;i<3000000;i++) {
console.log(i);
}
请解释为什么setTimeout在300毫秒内没有完成。 setTimeout仅在for
循环完成后执行;为什么呢?
答案 0 :(得分:0)
正如您可能已经知道的那样,Node.js正在使用单线程的V8(JavaScript)引擎。 I / O执行的核心是事件循环;当你阻止事件循环时,它也会阻止其他事件的执行。
基本上,for
循环之前执行,它开始阻塞事件循环。 setTimeout
并不保证您的代码在300毫秒后完全执行,但更像是>= 300 ms
。为了更好地理解事件循环read this。
答案 1 :(得分:-1)
基本上,您的代码在单个线程中运行。 setTimeout
的优先级低于标准代码,因此它将首先执行然后(因为线程将完成)它将从setTimeout
执行您的函数。
setTimeout(milliseconds)
运行函数的速度不会超过指定的毫秒数。