diff options
Diffstat (limited to 'src/util/promiseUtils.ts')
-rw-r--r-- | src/util/promiseUtils.ts | 21 |
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 |