|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # a-sync-waterfall
-
- Simple, isolated sync/async waterfall module for JavaScript.
-
- Runs an array of functions in series, each passing their results to the next in
- the array. However, if any of the functions pass an error to the callback, the
- next function is not executed and the main callback is immediately called with
- the error.
-
- For browsers and node.js.
-
- ## Installation
- * Just include a-sync-waterfall before your scripts.
- * `npm install a-sync-waterfall` if you’re using node.js.
-
-
- ## Usage
-
- * `waterfall(tasks, optionalCallback, forceAsync);`
- * **tasks** - An array of functions to run, each function is passed a
- `callback(err, result1, result2, ...)` it must call on completion. The first
- argument is an error (which can be null) and any further arguments will be
- passed as arguments in order to the next task.
- * **optionalCallback** - An optional callback to run once all the functions have
- completed. This will be passed the results of the last task's callback.
- * **forceAsync** An optional flag that force tasks run asynchronously even if they are sync.
-
- ##### Node.js:
-
- ```javascript
- var waterfall = require('a-sync-waterfall');
- waterfall(tasks, callback);
- ```
-
- ##### Browser:
-
- ```javascript
- var waterfall = require('a-sync-waterfall');
- waterfall(tasks, callback);
-
- // Default:
- window.waterfall(tasks, callback);
- ```
-
- ##### Tasks as Array of Functions
-
- ```javascript
- waterfall([
- function(callback){
- callback(null, 'one', 'two');
- },
- function(arg1, arg2, callback){
- callback(null, 'three');
- },
- function(arg1, callback){
- // arg1 now equals 'three'
- callback(null, 'done');
- }
- ], function (err, result) {
- // result now equals 'done'
- });
- ```
-
- ##### Derive Tasks from an Array.map
-
- ```javascript
- /* basic - no arguments */
- waterfall(myArray.map(function (arrayItem) {
- return function (nextCallback) {
- // same execution for each item, call the next one when done
- doAsyncThingsWith(arrayItem, nextCallback);
- }}));
-
- /* with arguments, initializer function, and final callback */
- waterfall([function initializer (firstMapFunction) {
- firstMapFunction(null, initialValue);
- }].concat(myArray.map(function (arrayItem) {
- return function (lastItemResult, nextCallback) {
- // same execution for each item in the array
- var itemResult = doThingsWith(arrayItem, lastItemResult);
- // results carried along from each to the next
- nextCallback(null, itemResult);
- }})), function (err, finalResult) {
- // final callback
- });
- ```
-
- ## Acknowledgements
- Hat tip to [Caolan McMahon](https://github.com/caolan) and
- [Paul Miller](https://github.com/paulmillr), whose prior contributions this is
- based upon.
- Also [Elan Shanker](https://github.com/es128) from which this rep is forked
-
- ## License
- [MIT](https://raw.github.com/hydiak/a-sync-waterfall/master/LICENSE)
|