diff options
Diffstat (limited to 'lib/whilst.js')
-rw-r--r-- | lib/whilst.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/whilst.js b/lib/whilst.js index 9406cd4..00c510c 100644 --- a/lib/whilst.js +++ b/lib/whilst.js @@ -3,6 +3,39 @@ import noop from 'lodash/noop'; import rest from 'lodash/rest'; +/** + * Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf async + * @category Control Flow + * @param {Function} test - synchronous truth test to perform before each + * execution of `fn`. Invoked with (). + * @param {Function} fn - A function which is called each time `test` passes. + * The function is passed a `callback(err)`, which must be called once it has + * completed with an optional `err` argument. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `fn` has stopped. `callback` + * will be passed an error and any arguments passed to the final `fn`'s + * callback. Invoked with (err, [results]); + * @example + * + * var count = 0; + * async.whilst( + * function() { return count < 5; }, + * function(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ export default function whilst(test, iteratee, cb) { cb = cb || noop; if (!test()) return cb(null); |