Skip to content

Instantly share code, notes, and snippets.

@nyteshade
Last active November 10, 2022 23:21
Show Gist options
  • Save nyteshade/dad57a2c09f2d13bbb86d8990f4f3421 to your computer and use it in GitHub Desktop.
Save nyteshade/dad57a2c09f2d13bbb86d8990f4f3421 to your computer and use it in GitHub Desktop.
TypeScript Deferred Function
type DeferredResult<DT> = {
promise: Promise<DT>;
resolve: (value?: DT | PromiseLike<DT>) => void;
reject: (reason?: any) => void;
};
type DeferredOptionalResult<DT> = {
promise?: Promise<DT>;
resolve?: (value?: DT | PromiseLike<DT>) => void;
reject?: (reason?: any) => void;
};
function Deferred<DT>(): DeferredResult<DT> {
let deferred: DeferredOptionalResult<DT> = {};
deferred.promise = new Promise<DT>((resolve, reject) => {
Object.assign(deferred, { resolve, reject })
});
return deferred as DeferredResult<DT>;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment