evt-promise

1.1.0 • Public • Published

evt-promise

Build Status Build Status Coverage Status

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');

//Simple usage
var foo = evt(function() {return true;});
foo.exec(function(value){console.log(value);},function(e) {throw e;}); //Will print true

//Catch errors
var bar = evt(function() {throw new Error('TEST');});
bar.exec(function(v){}, function(e){console.error(e.message);}); //Will print 'TEST' at stderr

//Pass arguments
var baz = evt(function(arg) {return arg;},[true]);
baz.exec(function(value){console.log(value);},function(e) {throw e;}); //Will print true

BASIC - new Promise-like API

const evt = require('evt-promise');

//Simple usage
var foo = evt.promiseLike(function() {this.emit('resolved',true)});
foo.then(function(value){console.log(value);})
   .catch(function(e) {throw e;}); //Will print true

//Catch errors
var bar = evt.promiseLike(function() {this.emit.('rejected', new Error('TEST'));});
bar.then(function(v){})
   .catch(function(e){console.error(e.message);}); //Will print 'TEST' at stderr

//Pass arguments
var baz = evt.promiseLike(function(arg) {this.emit('resolved',arg)},[true]);
baz.then(function(value){console.log(value);})
   .catch(function(e) {throw e;}); //Will print true

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');

//Change the task
var foo = evt(function() {return true});
foo.task = function() {
	return false;
}
foo.exec(function(value){console.log(value);},function(e) {throw e;}); //Will print false, not true

//Change the arguments
var bar = evt(function(arg) {return arg;},[true]);
bar.args = [false];
bar.exec(function(value){console.log(value);},function(e) {throw e;}); //Will print false not true

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'); //The this object is an instance of eventemitter2, injected by the apply() function
	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); //Will print 'custom event' and then 'hello coustom'

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

Readme

Keywords

Package Sidebar

Install

npm i evt-promise

Weekly Downloads

0

Version

1.1.0

License

MIT

Unpacked Size

182 kB

Total Files

14

Last publish

Collaborators

  • serverlua