evt-promise
An event-driven promise-like function wrapper, has a different api through the ES6 Promise
Install
npm install evt-promise --save
Usage
If you don’t understand the examples below or you want to see more detailed usage, have a look at this
BASIC - Legacy API:
const evt = require('evt-promise');
var foo = evt(function() {return true;});
foo.exec(function(value){console.log(value);},function(e) {throw e;});
var bar = evt(function() {throw new Error('TEST');});
bar.exec(function(v){}, function(e){console.error(e.message);});
var baz = evt(function(arg) {return arg;},[true]);
baz.exec(function(value){console.log(value);},function(e) {throw e;});
BASIC - new Promise-like API
const evt = require('evt-promise');
var foo = evt.promiseLike(function() {this.emit('resolved',true)});
foo.then(function(value){console.log(value);})
.catch(function(e) {throw e;});
var bar = evt.promiseLike(function() {this.emit.('rejected', new Error('TEST'));});
bar.then(function(v){})
.catch(function(e){console.error(e.message);});
var baz = evt.promiseLike(function(arg) {this.emit('resolved',arg)},[true]);
baz.then(function(value){console.log(value);})
.catch(function(e) {throw e;});
Warning: If you are using arrow function as the task in any of the examples that uses new Promise-like API, they won't work because you can't inject a this object to an arrow function
Advanced - Change the task that you want to run, Change the arguments that you want to pass to the task function - Legacy API:
const evt = require('evt-promise');
var foo = evt(function() {return true});
foo.task = function() {
return false;
}
foo.exec(function(value){console.log(value);},function(e) {throw e;});
var bar = evt(function(arg) {return arg;},[true]);
bar.args = [false];
bar.exec(function(value){console.log(value);},function(e) {throw e;});
Advanced - Emit custom events in the task and handle it - Legacy API
const evt = require('evt-promise');
var fn = function() {
this.emit('custom','custom event');
return 'hello custom';
};
var resHandler = function(value) {
console.log(value);
};
var rejHandler = function(e) {
throw e;
};
var foo = evt(fn)
foo.event.on('custom', function(value) {console.log(value);});
foo.exec(resHandler,rejHandler);
Warning: If you use arrow function as the task, this example won't work because you cannot inject a this object to an arrow function