aboutsummaryrefslogtreecommitdiff
path: root/src/util/promiseUtils.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-02 17:35:47 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-02 17:35:47 +0100
commitb5ee6b7b4ee506712f51e1b90e9256c4b0c0c603 (patch)
tree7d8bb4398ab52b58a5223d37e058eaea6c72f963 /src/util/promiseUtils.ts
parente1369ff7e8fc02116b9c4261036f0e42e3423cf4 (diff)
downloadwallet-core-b5ee6b7b4ee506712f51e1b90e9256c4b0c0c603.tar.xz
pending operations WIP
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