//setTimeout是在下一轮“事件循环”的开始时
setTimeout(function () {
console.log('three');
}, 0);
//立即resolve()的 Promise 对象,是在本轮“事件循环”(event loop)的结束时执行
Promise.resolve().then(function () {
console.log('two');
});
console.log('one');
// one
// two
// three
//setTimeout和setImmediate比较
//进入timers的时间延迟其实是随机的,如果两者都在主模块中调用,那么执行先后取决于进程性能,也就是随机。
//在I/O循环里面setImmediate总是最先执行,不管前面有多少个setTimeout
const fs = require('fs');
fs.readFile('./1.jpg', () => {
setTimeout(() => {
console.log('timeout');
}, 0);
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
});