前端总结01-任务顺序

135 阅读1分钟

事件循环机制

介绍:js 是单线程执行的,js中的任务按顺序一个一个的执行,但是一个任务耗时太长; 那么后面的任务就需要等待,为了解决这种情况,将任务分为了同步任务和异步任务; 而异步任务又可以分为微任务和宏任务。

console.log('aaa')
new Promise((resolve)=>{
    console.log("bbb")
    resolve()
    //注意这里,与下道题的区别
    new Promise((r)=>{
        console.log("99999")
        r()
    }).then(res=>{
        console.log("111111")
    })
}).then(res=>{
    console.log("ccc")
})
console.log("ddd")

输出的结果是;

1615983171(1).jpg

稍微修改一下这道题:

console.log('aaa')
new Promise((resolve)=>{
    console.log("bbb")
    resolve()
    //注意这里
    setTimeout(()=>{
        new Promise((r)=>{
            console.log("99999")
            r()
        }).then(res=>{
            console.log("111111")
        })
    },1)
}).then(res=>{
    console.log("ccc")
})
console.log("ddd")

输出的结果:

1615983549(1).jpg

第二道题中加了个定时器,把里面的promise放进了宏任务当中,所以先打印了ccc,再打印了,99999到111111.

补充:事件循环的具体流程请查看相关文档