From dd1a677a76d88c1cd5a7630ea9e9c791748570c9 Mon Sep 17 00:00:00 2001 From: Nathan Vasse Date: Fri, 5 Jan 2024 11:53:49 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B5(react)=20add=20Queue=20util?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This util processes function given to it sequentially, using a FIFO strategy. --- packages/react/src/utils/Queue.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 packages/react/src/utils/Queue.ts diff --git a/packages/react/src/utils/Queue.ts b/packages/react/src/utils/Queue.ts new file mode 100644 index 0000000..9aff110 --- /dev/null +++ b/packages/react/src/utils/Queue.ts @@ -0,0 +1,14 @@ +export class Queue { + private lastJob?: Promise; + + push(job: () => Promise): Promise { + const work = async () => { + if (this.lastJob) { + await this.lastJob; + } + return job(); + }; + this.lastJob = work(); + return this.lastJob; + } +}