aboutsummaryrefslogtreecommitdiff
path: root/src/util/promiseUtils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/promiseUtils.ts')
-rw-r--r--src/util/promiseUtils.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/util/promiseUtils.ts b/src/util/promiseUtils.ts
index eb649471b..9add2c407 100644
--- a/src/util/promiseUtils.ts
+++ b/src/util/promiseUtils.ts
@@ -36,4 +36,25 @@ export function openPromise<T>(): OpenedPromise<T> {
throw Error();
}
return { resolve, reject, promise };
+}
+
+export class AsyncCondition {
+ private _waitPromise: Promise<void>;
+ private _resolveWaitPromise: (val: void) => void;
+ constructor() {
+ const op = openPromise<void>();
+ this._waitPromise = op.promise;
+ this._resolveWaitPromise = op.resolve;
+ }
+
+ wait(): Promise<void> {
+ return this._waitPromise;
+ }
+
+ trigger(): void {
+ this._resolveWaitPromise();
+ const op = openPromise<void>();
+ this._waitPromise = op.promise;
+ this._resolveWaitPromise = op.resolve;
+ }
} \ No newline at end of file