1.常见的宏任务:

script(整体代码)、setTimeout、setInterval、I/O、setImmedidate,ajax

2.常见的微任务:

process.nextTick、MutationObserver、Promise.then catch finally

3.执行顺序

浏览器维护了一个事件队列,当主线程任务执行完成后,每隔相应的时间就会来事件队列查看,看看有咩有需要执行的任务。任务又分为宏任务和微任务,宏任务快于微任务。
执行顺序

4.一道题目

setTimeout(()=>{
    console.log('timer1')
    Promise.resolve().then(function() {
        console.log('promise1')
    })
}, 0)

setTimeout(()=>{
    console.log('timer2')
    Promise.resolve().then(function() {
        console.log('promise2')
    })
    setTimeout(() => {
        console.log('timer3')
    }, 0)
}, 0)

setTimeout(()=>{
    console.log('timer4')
}, 0)

Promise.resolve().then(function() {
    console.log('promise3')
})

console.log('start')

输出顺序为:

 start
 promise3
 timer1
 promise1
 timer2
 promise2
 timer4
 timer3
Last modification:September 25th, 2020 at 03:37 pm
如果觉得我的文章对你有用,请随意赞赏