Update sequential helper to properly queue promises

This commit is contained in:
Andrew Kingston 2022-07-14 16:17:25 +01:00
parent e3c2d57b0e
commit 0d2509a7f6
1 changed files with 10 additions and 6 deletions

View File

@ -5,13 +5,17 @@
* @return {Promise} a sequential version of the function
*/
export const sequential = fn => {
let promise
let queue = []
return async (...params) => {
if (promise) {
await promise
queue.push(async () => {
await fn(...params)
queue.pop()
if (queue.length) {
await queue[0]()
}
})
if (queue.length === 1) {
await queue[0]()
}
promise = fn(...params)
await promise
promise = null
}
}