微任务宏任务
2022-09-01 本文已影响0人
盖子pp
宏任务:整段script代码(可以理解为外层的同步代码),settimeout,setInterval,ajax请求
微任务:promise.then()
事件循环:宏任务和微任务的执行顺序是先宏后微,先执行同步代码,遇到异步宏任务则将宏任务放到宏任务队列,遇到异步微任务则将微任务放到微任务队列,当所有的同步任务执行完毕后,再去把所有的微任务从微任务队列调入主线程执行,微任务执行完毕,再去把宏任务的从宏任务队列调入主线程执行,一致循环直到所有循环执行完毕,这样循环就形成了事件循环event loop
image.png
测试题经典题1
console.log('script start')
setTimeout(() => {
console.log('timer')
}, 0);
Promise.resolve().then(()=>{
console.log('promise1')
}).then(()=>{
console.log('promise2')
})
console.log('script end')
答案: script start,script end,promise1,promise2,timer
测试题2
console.log(111)
new Promise((resolve) => {
setTimeout(() => {
console.log(222)
}, 0);
console.log(333)
resolve()
}).then(() => {
setTimeout(() => {
console.log(444)
},0)
console.log(555)
})
答案: 111,333,555,222,444