]> git.r.bdr.sh - rbdr/forum/blobdiff - src/lib/utils/resolve_after.ts
Update / use typescript
[rbdr/forum] / src / lib / utils / resolve_after.ts
diff --git a/src/lib/utils/resolve_after.ts b/src/lib/utils/resolve_after.ts
new file mode 100644 (file)
index 0000000..95a477e
--- /dev/null
@@ -0,0 +1,29 @@
+export type ResolveAfterPromise = {
+  counter: () => void,
+  promise: Promise<void>
+};
+
+export const resolveAfter = function (timesUntilResolve: number): ResolveAfterPromise {
+
+  let counter = null;
+  let currentValue = 0;
+
+  if (timesUntilResolve <= 0) {
+    throw new Error('Resolve after requires a positive integer');
+  }
+
+  const promise: Promise<void> = new Promise((resolvePromise) => {
+
+    counter = () => {
+
+      if (++currentValue === timesUntilResolve) {
+        resolvePromise();
+      }
+    };
+  });
+
+  return {
+    counter,
+    promise
+  };
+};