微任务和宏任务
任务队列又分为macro-task(宏任务)与micro-task(微任务),在最新标准中,它们被分别称为task与jobs。
macro-task大概包括:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering。
micro-task大概包括: process.nextTick, Promise, Object.observe(已废弃), MutationObserver(html5新特性)
js代码执行顺序
1,从上往下执行,遇到setTimeout,setInterval等宏任务添加到宏任务队列,遇到promise等微任务添加到微任务队列,同步代码执行完之后,执行微任务队列。
2,执行下一个宏任务,比如setTimeout函数体里面的,先执行同步代码,然后执行微任务代码,遇到宏任务就添加到宏任务队列
3,new Promise()函数体里面的代码为同步代码会同步执行,.then里的代码为异步代码。
网友评论