Skip to content

Instantly share code, notes, and snippets.

@kamataryo
Created September 21, 2019 13:46
Show Gist options
  • Save kamataryo/64a99bc7f368698ea50e314e6079b814 to your computer and use it in GitHub Desktop.
Save kamataryo/64a99bc7f368698ea50e314e6079b814 to your computer and use it in GitHub Desktop.
Delay your promise
const wait = (msec: number) =>
new Promise(resolve => setTimeout(resolve, msec));
const catched = Symbol("is-catched");
const delayPromise = (promise: Promise<any>, msec: number) => {
const catchedPromise = promise.catch(err => ({ [catched]: err }));
return Promise.all([catchedPromise, wait(msec)]).then(result => {
if (result[0][catched]) {
throw result[0][catched];
} else {
return result[0];
}
});
};
export default delayPromise;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment