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