微任务和宏任务

macro-task(宏任务):包括整体代码script,setTimeout,setInterval
micro-task(微任务):Promise,process.nextTick
不同类型的任务会进入不同的Event Queue,有宏任务的队列和微任务的队列。
事件循环的顺序,决定js代码的执行顺序。进入整体代码(宏任务)后,开始第一次循环。接着执行所有的微任务。然后再次从宏任务开始,找到其中一个任务队列执行完毕,再执行所有的微任务

整段代码作为宏任务进入主线程

遇到settimeout,将其回调函数注册后分发到宏任务Event Queue。

遇到了Promise,new Promise立即执行,then函数分发到微任务Event Queue

遇到console.log(),立即执行

第一个宏任务执行结束,看看有什么微任务,发现有then,执行

第二轮循环,发现宏任务settimeout的回调函数,执行。

结束。

 

posted @ 2019-07-19 14:06  HandsomeGuy  阅读(321)  评论(0编辑  收藏  举报