原文post

宏任务和微任务

  • macro-task(宏任务):包括整体代码script,setTimeout,setInterval
  • micro-task(微任务):Promise,process.nextTick

不同类型的任务会进入对应的Event Queue,比如setTimeout和setInterval会进入相同的Event Queue。

Event Queue 和 Event Loop

流程图

宏任务队列(event queue)里头,拿出一条宏任务执行,然后执行微任务队列(event queue)里 所有微任务,再执行宏任务(宏任务队列里头取一条),如此往复循环

宏任务队列、微任务队列里头,何时会新增数据

当指定的事情完成后 譬如,setTimeout和setInterval这些,就是delay的时间到了,需要执行fn了,便把这个fn插入到任务队列(对setTimeout和setInterval,就是插入到宏任务队列) 相应的,promise的resolve或者reject了,需要执行then或者catch这些fn了,便把这些个fn插入到微任务队列里头。

宏任务队列里头取一个执行。微任务队列是把所有都执行了