Skip to content

Instantly share code, notes, and snippets.

@jacksteamdev
Last active June 17, 2020 21:54
Show Gist options
  • Save jacksteamdev/c7e2f886dd1e2b180f7b8bfcb6d5a2bc to your computer and use it in GitHub Desktop.
Save jacksteamdev/c7e2f886dd1e2b180f7b8bfcb6d5a2bc to your computer and use it in GitHub Desktop.
Deferred Promise
/**
* Use this in testing to control when a promise resolves
*/
function defer<T>() {
let resolve: (value?: T) => void
let reject: (error: any) => void
const promise = new Promise<T>((res, rej) => {
resolve = res
reject = rej
})
return Object.assign(promise, {
resolve(value?: T) {
resolve!(value)
},
reject(error: any) {
reject!(error)
},
}) as Promise<T> & {
resolve: typeof resolve
reject: typeof reject
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment