UNPKG

glot

Version:

EventEmitter with Promises and Generators

50 lines (39 loc) 1.15 kB
'use strict' 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); } });