DamomHd / interview-question

整理各大厂面试题
1 stars 0 forks source link

Node中的事件循环和浏览器中的事件循环有什么区别? #22

Open DamomHd opened 3 years ago

DamomHd commented 3 years ago

宏任务执行顺序

  1. timers定时器:执行已经安排的setTimeout和setInterval的回调函数
  2. pending callback 待定回调:执行延迟到下一个循环迭代的I/0回调
  3. idle,prepare:仅系统内部使用
  4. poll:检索新的I/0事件,执行与I/0相关回调
  5. check:执行setImmediate()回调函数
  6. close callbacks:socket.on('close',()=>{})

微任务和宏任务在node执行顺序

Node v10及以前:

  1. 执行完一个阶段中的所有任务
  2. 执行nextTick队列里的内容
  3. 执行完微任务

Node v10以后: 和浏览器的行为统一了