@esutils/deferred
Version:
The deferred library implemented in Typescript
32 lines (24 loc) • 607 B
text/typescript
/**
* Copyright (C) 2022 Yonggang Luo <luoyonggang@gmail.com>
*
*/
export class Deferred<T> {
private readonly _promise: Promise<T>;
private _resolve!: (value: T | PromiseLike<T>) => void;
private _reject!: (reason?: any) => void;
constructor() {
this._promise = new Promise<T>((resolve, reject) => {
this._resolve = resolve;
this._reject = reject;
});
}
get promise(): Promise<T> {
return this._promise;
}
resolve = (value: T | PromiseLike<T>): void => {
this._resolve(value);
};
reject = (reason?: any): void => {
this._reject(reason);
};
}