微任务宏任务

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

上一篇下一篇

猜你喜欢

热点阅读