在浏览器中运行时,会setTimeout
在主程序执行完成之前触发其代码吗?主要浏览器供应商是否同意这种行为,还是实施的副作用?(或者他们是否同意将这种副作用作为标准行为)
考虑一个非常简单(且无用)的程序。
setTimeout(function(){
console.log("Timeout Called")
},1);
for(var i=0;i<10000000;i++){};
console.log("done");
首先,我们设置一个输出到控制台的微秒setTimeout
回调函数。Timeout Called
然后我们循环旋转超过一微秒。
然后我们输出done
到控制台。
当我运行这个程序时,它总是输出
done
Timeout Called
也就是说,在setTimeout
主程序运行之前不会考虑回调函数。
这是可靠的、明确的行为吗?或者是否存在主程序执行将停止,回调运行,然后主程序执行继续的时候。