deferred helper, might be useful

This commit is contained in:
MapleLeaf
2021-12-08 01:02:41 -06:00
parent 197c24ad01
commit abdf88fdc9
2 changed files with 34 additions and 0 deletions

20
src/helpers/deferred.ts Normal file
View File

@@ -0,0 +1,20 @@
export type Deferred<T> = PromiseLike<T> & {
resolve: (value: T | PromiseLike<T>) => void
reject: (reason?: unknown) => void
}
export function deferred<T = void>(): Deferred<T> {
let resolve: (value: T | PromiseLike<T>) => void
let reject: (reason?: unknown) => void
const promise = new Promise<T>((_resolve, _reject) => {
resolve = _resolve
reject = _reject
})
return {
then: promise.then.bind(promise),
resolve: (value) => resolve(value),
reject: (reason) => reject(reason),
}
}