This commit is contained in:
MapleLeaf
2021-12-16 11:48:18 -06:00
parent 803252290d
commit e709e3acb5
33 changed files with 467 additions and 437 deletions

View File

@@ -0,0 +1,21 @@
// eslint-disable-next-line import/no-unused-modules
export type Deferred<T> = PromiseLike<T> & {
resolve: (value: T | PromiseLike<T>) => void
reject: (reason?: unknown) => void
}
export function createDeferred<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),
}
}