1、实现每次可以控制并发的数量
var tasks = [
() => { return setTimeFun(1001) },
() => { return setTimeFun(1002) },
() => { return setTimeFun(1003) },
() => { return setTimeFun(1004) },
() => { return setTimeFun(1005) },
() => { return setTimeFun(1006) }]
function createRequest(tasks, pool) {
pool = pool || 5
let results = []
together = new Array(pool).fill(null)
index = 0
together.map(() => {
return new Promise((resolve, reject) => {
var run = function fun() {
if (index >= tasks.length) {
resolve()
return
}
let old_index = index
task = tasks[index++]()
task.then(function (result) {
results[old_index] = result
fun()
}, function (reason) {
reject(reason)
})
}
run()
})
})
return Promise.all(together).then(() => results)
}
createRequest(tasks, 3).then(function (result) {
console.log(result)
}).catch(function () {
})
</script>