aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/data/queue.ts
diff options
context:
space:
mode:
Diffstat (limited to 'Timeline/ClientApp/src/app/data/queue.ts')
-rw-r--r--Timeline/ClientApp/src/app/data/queue.ts14
1 files changed, 14 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/app/data/queue.ts b/Timeline/ClientApp/src/app/data/queue.ts
new file mode 100644
index 00000000..001340a9
--- /dev/null
+++ b/Timeline/ClientApp/src/app/data/queue.ts
@@ -0,0 +1,14 @@
+const queueMap = new Map<string, Promise<null>>();
+
+export function queue<T>(key: string, func: () => Promise<T>): Promise<T> {
+ const last = queueMap.get(key);
+ if (last == null) {
+ const promise = func();
+ queueMap.set(key, promise.then(null, null));
+ return promise;
+ } else {
+ const promise = last.then(() => func());
+ queueMap.set(key, promise.then(null, null));
+ return promise;
+ }
+}