EventLoop;
将同步任务和异步任务分开,同步任务加入主进程执行,异步任务加入事件循环队列,当主进程任务执行完毕后,将事件循环队列的任务推到主进程执行,当事件循环队列中没有事件时,退出程序。
ps:当主进程执行的任务时间过长,那么若是事件循环中存在定时器任务,那么定时器任务的定时可能被延长
例子:
console.log("app start");
setTimeout(()=>{
console.log("timeout");
},1000)
new Promise((resolve,reject)=>{
console.log("new promise")
resolve()
}).then(()=>{
setTimeout(()=>{
console.log("promise time out")
},500)
console.log("promise finished")
})
console.log("app finished");
// app start
// new promise
// app finished
// promise finished
// promise time out
// timeout
-
宏任务
主体script,setTimeout,setInterval
-
微任务
Promise.then,process.nextTick
主进程先执行宏任务再执行微任务