Node Promise + EventEmitter
const { EventEmitter } = require('events'); | |
const createFuture = require('./future'); | |
/** | |
* PromiseEmitter class - Combines Promise and EventEmitter | |
* @param {*} fn is a funtion that should accept (resolve, reject, emitter) | |
*/ | |
function PromiseEmitter(fn) { | |
const { resolve, reject, promise } = createFuture(); | |
// add eventemitter to promise | |
Object.assign(promise, EventEmitter.prototype); | |
EventEmitter.call(promise); | |
// run fn call out of band | |
setTimeout(() => fn.call(promise, resolve, reject, promise), 1); | |
return promise; | |
} | |
module.exports = PromiseEmitter; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment