美文网首页
微任务宏任务

微任务宏任务

作者: 盖子pp | 来源:发表于2022-09-01 19:59 被阅读0次

    宏任务:整段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

    相关文章

      网友评论

          本文标题:微任务宏任务

          本文链接:https://www.haomeiwen.com/subject/fzssnrtx.html