diff options
| author | Shipwreckt <me@shipwreckt.co.uk> | 2025-10-31 20:02:14 +0000 |
|---|---|---|
| committer | Shipwreckt <me@shipwreckt.co.uk> | 2025-10-31 20:02:14 +0000 |
| commit | 7a52ddeba2a68388b544f529d2d92104420f77b0 (patch) | |
| tree | 15ddd47457a2cb4a96060747437d36474e4f6b4e /node_modules/a-sync-waterfall/README.md | |
| parent | 53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff) | |
Changed from static to 11ty!
Diffstat (limited to 'node_modules/a-sync-waterfall/README.md')
| -rw-r--r-- | node_modules/a-sync-waterfall/README.md | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/node_modules/a-sync-waterfall/README.md b/node_modules/a-sync-waterfall/README.md new file mode 100644 index 0000000..e3d5afe --- /dev/null +++ b/node_modules/a-sync-waterfall/README.md @@ -0,0 +1,95 @@ +# 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) |
