var request = url => {
return new Promise(resolve => {
setTimeout(() => {
resolve(`任务${url}完成`)
}, 1000)
}).then(res => {
console.log('外部逻辑', res);
})
}
function addTask(url){
let task = request(url);
pool.push(task);
task.then(res => {
pool.splice(pool.indexOf(task), 1);
console.log(`${url} 结束,当前并发数:${pool.length}`);
url = urls.shift();
if(url !== undefined){
addTask(url);
}
})
}
let urls = ['bytedance.com','tencent.com','alibaba.com','microsoft.com','apple.com','hulu.com','amazon.com']
let pool = []
let max = 3
while (pool.length < max) {
let url = urls.shift();
addTask(url)
}
console