mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
154 lines
3.1 KiB
Markdown
154 lines
3.1 KiB
Markdown
# Execon [![License][LicenseIMGURL]][LicenseURL] [![NPM version][NPMIMGURL]][NPMURL] [![Dependency Status][DependencyStatusIMGURL]][DependencyStatusURL] [![BuildStatusIMGURL]][BuildStatusURL]
|
|
|
|
Patterns of function calls.
|
|
|
|
## Install
|
|
![NPM_INFO][NPM_INFO_IMG]
|
|
```
|
|
npm i execon --save
|
|
# or
|
|
bower i execon --save
|
|
```
|
|
|
|
## Api
|
|
|
|
```js
|
|
var exec = require('execon');
|
|
```
|
|
|
|
### exec
|
|
Check is parameter is function, if it's - executes it with given parameters
|
|
|
|
Was:
|
|
|
|
```js
|
|
function(callback, p1, p2, pN) {
|
|
if (typeof callback === 'function')
|
|
callback(p1, p2, pN);
|
|
}
|
|
```
|
|
|
|
Now
|
|
|
|
```js
|
|
function(callback, p1, p2, pN) {
|
|
exec(callback, p1, p2, pN);
|
|
}
|
|
```
|
|
|
|
or just
|
|
|
|
```js
|
|
exec.ret(callback, p1, p2, pN);
|
|
```
|
|
|
|
### exec.if
|
|
Conditional execution one of two functions
|
|
|
|
Preconditions:
|
|
|
|
```js
|
|
function one() {
|
|
console.log(1);
|
|
}
|
|
|
|
function two(callback) {
|
|
setTimeout(callback, 1000);
|
|
}
|
|
```
|
|
|
|
|
|
Before:
|
|
|
|
```js
|
|
if (2 > 3)
|
|
one();
|
|
else
|
|
two(one);
|
|
|
|
```
|
|
|
|
After:
|
|
|
|
```js
|
|
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**.
|
|
|
|
```js
|
|
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.**
|
|
|
|
```js
|
|
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
|
|
|
|
```js
|
|
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
|
|
|
|
[NPM_INFO_IMG]: https://nodei.co/npm/execon.png?downloads=true&&stars&&downloadRank "npm install rendy"
|
|
[NPMIMGURL]: https://img.shields.io/npm/v/execon.svg?style=flat
|
|
[DependencyStatusIMGURL]: https://img.shields.io/gemnasium/coderaiser/execon.svg?style=flat
|
|
[LicenseIMGURL]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat
|
|
[NPMURL]: https://npmjs.org/package/execon "npm"
|
|
[BuildStatusURL]: https://travis-ci.org/coderaiser/execon "Build Status"
|
|
[DependencyStatusURL]: https://gemnasium.com/coderaiser/execon "Dependency Status"
|
|
[LicenseURL]: https://tldrlegal.com/license/mit-license "MIT License"
|
|
[BuildStatusIMGURL]: https://img.shields.io/travis/coderaiser/execon/master.svg?style=flat
|
|
[BuildStatusURL]: https://travis-ci.org/coderaiser/execon "Build Status"
|