SOURCE

// 设计一个简单的任务队列, 要求分别在 1,3,4 秒后打印出 "1", "2", "3";
function generateTask(fn, time){
    return new Promise((resolve, reject)=>{
        setTimeout(()=>{
            resolve("6")
            fn()
        },time)
    })
}

const tasks = [generateTask(()=>console.log(1),1000),
    generateTask(()=>console.log(3),3000),
    generateTask(()=>console.log(4),4000),
]

// 让三个任务一起并行执行
async function doTask(t){
    let  res = null
    try {
        res = await t
    }catch (e) {
        res = e
    }
  return res
}
// (async function(){
// for(let t of tasks) {
//     console.log("before")
//     // console.log(await doTask(t))
//      doTask(t)
//     console.log("after")
// }
// })()
// 这个加await的话会阻塞进入下一个循环,但是不会影响结果,因为在generateTask的时候已经启动了定时器了,
// 也就是说Promise的解开时间是固定好的了
// 如果需要启动并发,就别加await
console 命令行工具 X clear

                    
>
console