diff options
Diffstat (limited to 'packages/taler-wallet-core/src/util')
| -rw-r--r-- | packages/taler-wallet-core/src/util/promiseUtils.ts | 24 | ||||
| -rw-r--r-- | packages/taler-wallet-core/src/util/query.ts | 4 |
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[]>; } |
