EventLoop
- node中的事件环 和 浏览器中的没有任何关系
流程
- 先把主执行栈的内容执行完,然后切换放定时器的队列,在切换前会把微任务队列执行完,如果定时器的队列没到时间就往下走,切换到 放I/O的队列中,在切换前再把微任务队列执行完,I/O 走完走到 check阶段,在切换前还是会把微任务队列执行完,当没有check阶段 页面中还有定时器的时候 会在 i/o那个队列等着 扫描定时器 如果达到了时间在执行 ,程序结束了就结束了
实例辅助
let fs = require("fs");
fs.readFile("1.txt","utf8",function(){
setTimeout(function(){
console.log("timeout");
},0)
setImmdiate(function(){
console.log("setImm");
})
})
//setImm
//timeout
解析:
- 因为fs 是在 i/o队列中的
- setImmdiate 是check队列的 ,I/o下面就是check,先走check
- 时间到了在走定时器