Skip to content

Instantly share code, notes, and snippets.

@PabloAlexandre
Last active March 16, 2018 15:02
Show Gist options
  • Save PabloAlexandre/7344f50c3dc978d528ca7977a49c300d to your computer and use it in GitHub Desktop.
Save PabloAlexandre/7344f50c3dc978d528ca7977a49c300d to your computer and use it in GitHub Desktop.
export function promisifyAll(classToPromisify) {
const props = Object.getOwnPropertyNames(Object.getPrototypeOf(classToPromisify));
const fns = props.sort().filter((e, i, arr) => {
return e !== arr[i + 1] && e !== 'constructor' && typeof classToPromisify[e] === 'function';
});
fns.forEach((e) => {
classToPromisify[`${e}Async`] = (...args) => new Promise((resolve, reject) => {
return classToPromisify[e].call(classToPromisify, ...args, (err, data) => {
if (err) {
reject(err);
}
resolve(data);
});
});
});
return classToPromisify;
}
// const promise = promisifyAll(new myClass()).myMethodCallbackAsync(args);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment