simpleflow
v0.0.2
Published
Simple flow library to chain and run functions with asynchronous calls
Downloads
23
Readme
SimpleFlow
Simple flow library to chain and run functions with synchronous and asynchronous calls. WIP.
Installation
Via npm on Node:
npm install simpleflow
Usage
Reference in your program:
var sf = require('simpleflow');
Create and run a sequence of synchronous functions:
var seq = sf.sequence(
function (data) {
console.log(data);
return data + 1;
},
function (data) {
console.log(data);
return data + 1;
},
function (data) {
console.log(data);
return data + 1;
}
);
seq.run(1);
Output
1
2
3
In this way, you can define the sequence once, and run it many times with different initial data.
Create and run a sequence of asynchronous functions:
var seq = sf.sequence(
function (data, next) {
console.log(data);
next(null, data + 1);
},
function (data, next) {
console.log(data);
next(null, data + 1);
},
function (data, next) {
console.log(data);
next(null, data + 1);
}
);
seq.run(1);
Output
1
2
3
You can mix both kind of functions:
var seq = sf.sequence(
function (data) {
console.log(data);
return data + 1;
},
function (data, next) {
console.log(data);
next(null, data + 1);
},
function (data, next) {
console.log(data);
next(null, data + 1);
}
);
seq.run(1);
Output
1
2
3
The return of run
is a future object with success
and fail
associated functions:
var seq = sf.sequence(
function (data, next) {
next(null, data + 1;
},
function (data, next) {
next(null, data + 1);
},
function (data, next) {
next(null, data + 1);
}
);
seq.run(1).success(
function (data) {
console.log('result:', data);
}
).fail(
function (err) {
console.log('error:', err);
}
);
Output
result: 4
So, you can define success
and fail
behaviour in your own scope. You can define the sequence once, and run
it many times, with different initial data and success
, fail
context. Partial example, an action in a controller:
var seq = sf.sequence(step1, step2, step3);
// ...
function index(req, res) {
seq.run(req.params.id)
.success(function (data) {
res.render('index', { model: data });
})
.fail(function (err) {
res.render('error', { error: err });
});
}
Development
git clone git://github.com/ajlopez/SimpleFlow.git
cd SimpleFlow
npm install
npm test
Samples
To Do
- Parallel execution of a list of functions
- Map
- Reduce
Versions
- 0.0.1: Published
- 0.0.2: Published
License
MIT
References
Contribution
Feel free to file issues and submit pull requests � contributions are welcome<
If you submit a pull request, please be sure to add or update corresponding
test cases, and ensure that npm test
continues to pass.