cloudcmd/modules/execon
2015-12-29 16:18:00 -05:00
..
lib feature(bower) execon v1.2.9 2015-10-26 14:22:38 -04:00
.bower.json feature(bower) emitify v2.0.0 2015-12-29 16:18:00 -05:00
bower.json feature(bower) execon v1.2.9 2015-10-26 14:22:38 -04:00
ChangeLog feature(bower) execon v1.2.9 2015-10-26 14:22:38 -04:00
LICENSE feature(bower) philip v1.2.0 2015-07-18 18:29:21 -04:00
package.json feature(bower) execon v1.2.9 2015-10-26 14:22:38 -04:00
README.md feature(cloudcmd) add execon from bower 2015-10-21 03:19:22 -04:00

Execon License NPM version Dependency Status BuildStatusIMGURL

Patterns of function calls.

Install

NPM_INFO

npm i execon --save
# or
bower i execon --save

Api

var exec = require('execon');

exec

Check is parameter is function, if it's - executes it with given parameters

Was:

function(callback, p1, p2, pN) {
    if (typeof callback === 'function')
        callback(p1, p2, pN);
}

Now

function(callback, p1, p2, pN) {
    exec(callback, p1, p2, pN);
}

or just

exec.ret(callback, p1, p2, pN);

exec.if

Conditional execution one of two functions

Preconditions:

function one() {
    console.log(1);
}

function two(callback) {
    setTimeout(callback, 1000);
}

Before:

if (2 > 3)
    one();
else
    two(one);
    

After:

exec.if(2 > 3, one, two);

exec.parallel

if a you need a couple async operation do same work, and then call callback, this function for you.

Node.js example.

var fs      = require('fs'),
    Util    = require('execon');

exec.parallel([
    function(callback) {
        fs.readFile('file1', callback);
    },
    function(callback) {
        fs.readFile('file2',  callback);
    }
], function(error, data1, data2) {
    if (error)
        console.log(error)
    else
        console.log(data1, data2);
});

Vanilla js example.

var ONE_SECOND  = 1000,
    TWO_SECONDS = 2000,
    func        = function(time, str, callback) {
        setTimeout(function() {
            console.log(str);
            callback(null, str);
        }, time);
    },
    
    func1       = func.bind(null, TWO_SECONDS, 'first'),
    func2       = func.bind(null, ONE_SECOND, 'second');

exec.parallel([func1, func2], function(error, str1, str2) {
    console.log(str1, str2);
});

exec.series

executes functions one-by-one

function one(callback){
    setTimeout(function() {
        console.log(1)
        callback();
    }, 1000);
}

function two(callback) {
    console.log(2);
    callback();
}

exec.series([one, two], function(error) {
    console.log(error || 'done');
});

License

MIT