quote-api / utils /promise-concurrent.js
akkun3704's picture
Upload folder using huggingface_hub
5ae7e18
raw
history blame contribute delete
617 Bytes
function promiseAllStepN (n, list) {
let tail = list.splice(n)
let head = list
let resolved = []
let processed = 0
return new Promise(resolve => {
head.forEach(x => {
let res = x()
resolved.push(res)
res.then(y => {
runNext()
return y
})
})
function runNext () {
if (processed == tail.length) {
resolve(Promise.all(resolved))
} else {
resolved.push(tail[processed]().then(x => {
runNext()
return x
}))
processed++
}
}
})
}
module.exports = n => list => promiseAllStepN(n, list)