Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 606 Bytes

AsyncQueue.md

File metadata and controls

31 lines (24 loc) · 606 Bytes

webpack build模块时可以并发处理,每个操作都是一个buildTask,放在队列(AsyncQueue.js)中,当前任务遇到异步操作时,就会先处理下一个任务

// webpack异步队列核心原理

let index = 0

const buildTask = () => {
    let id = ++index
    console.log(id)
    // 异步操作阻塞后会直接执行下一个task
    setTimeout(() => {
        console.log(`${id}_异步`)
    })
}

const queue = [buildTask, buildTask, buildTask]
while(queue.length > 0) {
    const task = queue.shift()
    task()
}


// 1
// 2
// 3
// 1_异步
// 2_异步
// 3_异步