Is a simple control-flow library for node.js that makes serial execution, parallel execution and error handling painless. Inspired by step twostep was based on Tim Caswell (step author) gist, but later it was refactored and almost totally rewritten. Twostep follows and extends the ideas behind the step.
- serial and parallel (with results grouping support) execution
- simple error handling
- simplified error handling for common use case (when error handled at the last step)
- ability to pass the arbitrary values between steps (using
- pure js code (no dependencies, < 200 lines of code)
- full test coverage (100%)
- super battle-tested (we ubiquitously use twostep in a big project (50 000+ lines of code))
npm install twostep
All steps (functions) passed to the
Step will be executed in series. Inside
this.slot() for wating of async call,
passing value to the next step or
this.makeGroup() for creating group (for
having results grouped to array) can be called.
var Step = Stepfs = ;;
In the example above we did
if (err) throw err; at the start of every step to
pass the error (if it exists) to the next step for handle the error at the last
step. We can avoid writing this annoying line using
example described above transforms to
var Steppy = Steppyfs = ;;
Step(step1, step2, stepN...)
Steps container accepts functions and executes them in series. If error is
occured inside step it will be passed to the next step as first argument. First
argument of the step is always an error (falsy if no error), subsequent
arguments - values passed to the reserved slots (created via
this.makeGroup()) of previous step in the order the slots
Steppy(step1, step2, stepN...)
Same steps container as
Step but it also automatically wraps every single step
with error check and calls the last step if error occurs.
Methods which can be called inside each step
Reserves one slot at the current step. Next step will be called when
all reserved slots of current step will be filled with data or the error occurs.
function(err, data) to fill the slot with data.
this.pass(value1, value2, valueN...)
Passes one or several synchronous values to the next step.
Reserves slot, creates and returns a group, all results of which will be passed
into the reserved slot as a single array.
slot methods can be called
for created group. If group methods were not called empty array will be passed
into reserved slot.
into cloned repository run
after installtion run
for run tests and generate coverage report run
npm run testAndCover
detailed coverage report will be saved at ./coverage/index.html