4深入理解事件循环Event Loop(宏任务、微任务)

参考笔者之前转载的一篇- 10 分钟理解 JS 引擎的执行机制

例子:

//process是微任务
// 值得注意的一点是, 每次宏任务执行完, 就执行该宏任务对应的微任务

console.log('1') // 1 同步代码:立即执行 [1]

setTimeout(function () {
    console.log('2') // 3 同步代码执行执行 输出2
    process.nextTick(function () {
        console.log('3') // 4 进入微任务队列 [3]
    })
    new Promise(function (resolve) {
        console.log('4') // 3 同步代码执行执行 输出4
        resolve()
    }).then(function () {
        console.log('5') // 4 进入微任务队列 [3, 5]
    })
})

process.nextTick(function () {
    console.log('6') // 2 进入微任务队列 [6]
})

new Promise(function (resolve) {
    console.log('7') // 1 宏任务:立即执行 [1, 7]
    resolve()
}).then(function () {
    console.log('8') // 2 进入微任务队列 [6, 8]
})

setTimeout(function () {
    console.log('9') // 5 宏任务:立即执行 [9]
    process.nextTick(function () {
        console.log('10') // 6 进入微任务队列 [10]
    })
    new Promise(function (resolve) {
        console.log('11') // 5 宏任务:立即执行 [9, 11]
        resolve()
    }).then(function () {
        console.log('12') // 6 进入微任务队列 [10, 12]
    })
})

// 执行顺序:1 7 6 8 2 4 3 5 9 11 10 12
上一篇:oracle 将表名和字段名变为大写


下一篇:自动化爬取网易云视频,一个是获取网易云视频列表 一个是 获取视频真实播放地址