make a new package for helpers

This commit is contained in:
itsMapleLeaf
2022-07-27 22:42:35 -05:00
parent 0df45acba3
commit 831bf9ea44
35 changed files with 276 additions and 49 deletions

View File

@@ -0,0 +1,25 @@
export type AsyncCallback = () => unknown
export class AsyncQueue {
private callbacks: AsyncCallback[] = []
private promise: Promise<void> | undefined
async add(callback: AsyncCallback) {
this.callbacks.push(callback)
if (this.promise) return this.promise
this.promise = this.runQueue()
try {
await this.promise
} finally {
this.promise = undefined
}
}
private async runQueue() {
let callback: AsyncCallback | undefined
while ((callback = this.callbacks.shift())) {
await callback()
}
}
}