Javascript setImmediate之前的setTimeout
此代码显示setTimeout在setImmediate之前。为什么会这样?我认为所有setimmedia都是在设置超时之前运行的Javascript setImmediate之前的setTimeout,javascript,asynchronous,timeout,settimeout,Javascript,Asynchronous,Timeout,Settimeout,此代码显示setTimeout在setImmediate之前。为什么会这样?我认为所有setimmedia都是在设置超时之前运行的 setImmediate(function() { console.log("i"); }); setTimeout(function() { console.log("t"); }, 0); var i; for (i = 0 ; i < 3000000000 ; ++i) {} setImmediate(函数(){ 控制台日志(“i”
setImmediate(function() {
console.log("i");
});
setTimeout(function() {
console.log("t");
}, 0);
var i;
for (i = 0 ; i < 3000000000 ; ++i) {}
setImmediate(函数(){
控制台日志(“i”);
});
setTimeout(函数(){
控制台日志(“t”);
}, 0);
var i;
对于(i=0;i<3000000000;++i){}
根据:
如果两者都是从主模块中调用的,则计时将受到进程性能的限制(这可能会受到机器上运行的其他应用程序的影响)
但是,在某些情况下,这种行为确实会发生:如果在一个I/O周期内移动两个调用,则立即回调始终首先执行:
// timeout_vs_immediate.js
const fs = require('fs');
fs.readFile(__filename, () => {
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
});
这是否正在节点上运行?或者哪个浏览器?它在节点v5.2.0中运行