宏任务 微任务 与 Event Loop (事件循环)

68 阅读1分钟

宏任务 微任务

同步和异步任务会分别进入不同的执行“场所”,同步的进入主线程异步的进入Event Table并注册函数。当指定的事情完成时,Event Table会将这个函数移入Event Queue. 主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。 上诉过程会不断重复,也就是常说的Event Loop(事件循环)

js异步有一个机制:遇到宏任务先执行宏任务,将宏任务放入Event Queue,再执行微任务,将微任务放入Event Queue。宏任务和微任务的Queue不是同一个队列,当往外拿的时候,先从微任务里拿这个回调函数,然后再从宏任务的队列中拿宏任务的回调函数。

即同步代码会进入主线程执行,异步代码会被移入事件队列中等待执行,主线程的任务执行完毕后,会去事件队列中读取对应的函数,且宏任务和微任务不在同一个队列中。当往外拿的时候,先执行微任务,再执行宏任务

宏任务一般是,包括整体代码script,setTimeOut,setInterval
微任务:Promise,Process.nextTick