node.js之事件循环

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
    

主进程先执行宏任务再执行微任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值