glot
Version:
EventEmitter with Promises and Generators
47 lines (35 loc) • 1.21 kB
JavaScript
const Glot = require('../lib/glot');
const co = require('co');
const wait = require('co-wait');
let events = new Glot();
//On plain function listener
events.on('foo', function (data){
console.log('on foo plain:', data)
});
//On promise listener
events.on('foo', (data) => {
return new Promise((resolve, reject) => {
console.log('on foo promise:', data);
setTimeout(()=> resolve(data), 2000);
}).catch((err) => console.log(err));
});
//On generator listener
events.on('foo', function* (data){
console.log('on foo generator:', data)
yield wait(2000);
return data;
});
events.pmit('foo', { promise: 'foo1' }).then((data) => console.log(data)).catch((err) => console.log(err.stack));
events.pmit('foo', { promise: 'foo2' }).then((data) => console.log(data)).catch((err) => console.log(err.stack));
events.emit('foo', { emit: 'foo1' });
events.emit('foo', { emit: 'foo2' });
co(function *() {
try {
let result = yield events.gmit('foo', { gmit: 'foo1' });
let result2 = yield events.gmit('foo', { gmit: 'foo2' });
console.log('Final result: ', [...result, ...result2]);
} catch(err) {
console.log(err.stack);
}
});