A framework to serialize the execution of event handlers for disorderly event emitting
MIT License
A framework to serialize the execution of event handlers for disorderly event emitting
npm install --save downspout
Please use browserify (or webpack) when using with browser.
const Downspout = require('downspout');
const state = {
counter: 0,
};
const useCases = {
increment: () => {
return Promise.resolve({
type: 'INCREMENT',
});
},
decrement: () => {
return new Promise(resolve => {
setTimeout(() => {
resolve({
type: 'DECREMENT',
});
}, 1000);
});
},
};
const downspout = new Downspout(useCases);
downspout.on('execution:resolved', ({ result: action }) => {
switch (action.type) {
case 'INCREMENT':
state.counter += 1;
break;
case 'DECREMENT':
state.counter -= 1;
break;
}
process.stdout.write(`${ state.counter }\n`);
});
downspout.execute('increment'); // -> "1"
downspout.execute('increment'); // -> "2"
downspout.execute('decrement'); // -> "1"
downspout.execute('increment'); // -> "2"
downspout.execute('decrement'); // -> "1"
(Later)