aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/util')
-rw-r--r--packages/taler-wallet-core/src/util/promiseUtils.ts24
-rw-r--r--packages/taler-wallet-core/src/util/query.ts4
2 files changed, 14 insertions, 14 deletions
diff --git a/packages/taler-wallet-core/src/util/promiseUtils.ts b/packages/taler-wallet-core/src/util/promiseUtils.ts
index d409686d9..23f1c06a5 100644
--- a/packages/taler-wallet-core/src/util/promiseUtils.ts
+++ b/packages/taler-wallet-core/src/util/promiseUtils.ts
@@ -23,6 +23,8 @@ export interface OpenedPromise<T> {
/**
* Get an unresolved promise together with its extracted resolve / reject
* function.
+ *
+ * Recent ECMAScript proposals also call this a promise capability.
*/
export function openPromise<T>(): OpenedPromise<T> {
let resolve: ((x?: any) => void) | null = null;
@@ -39,22 +41,20 @@ export function openPromise<T>(): OpenedPromise<T> {
}
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;
- }
+ private promCap?: OpenedPromise<void> = undefined;
+ constructor() {}
wait(): Promise<void> {
- return this._waitPromise;
+ if (!this.promCap) {
+ this.promCap = openPromise<void>();
+ }
+ return this.promCap.promise;
}
trigger(): void {
- this._resolveWaitPromise();
- const op = openPromise<void>();
- this._waitPromise = op.promise;
- this._resolveWaitPromise = op.resolve;
+ if (this.promCap) {
+ this.promCap.resolve();
+ }
+ this.promCap = undefined;
}
}
diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts
index 1de1e9a0d..527cbdf63 100644
--- a/packages/taler-wallet-core/src/util/query.ts
+++ b/packages/taler-wallet-core/src/util/query.ts
@@ -338,7 +338,7 @@ interface IndexReadOnlyAccessor<RecordType> {
iter(query?: IDBKeyRange | IDBValidKey): ResultStream<RecordType>;
get(query: IDBValidKey): Promise<RecordType | undefined>;
getAll(
- query: IDBKeyRange | IDBValidKey,
+ query?: IDBKeyRange | IDBValidKey,
count?: number,
): Promise<RecordType[]>;
}
@@ -351,7 +351,7 @@ interface IndexReadWriteAccessor<RecordType> {
iter(query: IDBKeyRange | IDBValidKey): ResultStream<RecordType>;
get(query: IDBValidKey): Promise<RecordType | undefined>;
getAll(
- query: IDBKeyRange | IDBValidKey,
+ query?: IDBKeyRange | IDBValidKey,
count?: number,
): Promise<RecordType[]>;
}