思路
核心思路是,通过在任务完成的时候通过回调触发新的循环引入任务。
代码
let logic = (num) =>{
num = num * 1000;
return new Promise((resolve)=>{
setTimeout(() => {
console.log(num);
resolve(num);
}, num);
})
}
function f(){
let jobList = [1,1,5,4,1,2,2];
let workingNum = 0;
let getJob = () =>{
while(workingNum<2 && jobList.length>0){
let newJobNum = jobList.shift();
logic(newJobNum).then(ret=>{
workingNum--;
getJob();
});
workingNum++;
}
}
getJob();
}
f()