diff options
author | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-07-01 18:16:23 -0400 |
---|---|---|
committer | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-07-01 18:16:23 -0400 |
commit | d565a5099030ae8fae3d66654d753507bb31bd1e (patch) | |
tree | 3ea22863979498f958f10626cedeae43f262924c | |
parent | c312a050eb8bbbf8826d7ce05781ad99ac14e9dc (diff) | |
download | async-d565a5099030ae8fae3d66654d753507bb31bd1e.tar.gz |
Implement doDuring via during
-rw-r--r-- | lib/async.js | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/lib/async.js b/lib/async.js index 5da3622..74ccf38 100644 --- a/lib/async.js +++ b/lib/async.js @@ -850,43 +850,38 @@ async.during = function (test, iterator, callback) { callback = callback || noop; - test(function(err, truth) { + + var next = _restParam(function(err, args) { if (err) { - return callback(err); - } - if (truth) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.during(test, iterator, callback); - }); + callback(err); + } else { + args.push(check); + test.apply(this, args); } - else { + }); + + var check = function(err, truth) { + if (err) { + callback(err); + } else if (truth) { + iterator(next); + } else { callback(null); } - }); + }; + + test(check); }; async.doDuring = function (iterator, test, callback) { - callback = callback || noop; - iterator(_restParam(function (err, args) { - if (err) { - return callback(err); + var calls = 0; + async.during(function(next) { + if (calls++ < 1) { + next(null, true); + } else { + test.apply(this, arguments); } - args.push(function (err, truth) { - if (err) { - return callback(err); - } - if (truth) { - async.doDuring(iterator, test, callback); - } - else { - callback(null); - } - }); - test.apply(null, args); - })); + }, iterator, callback); }; function _queue(worker, concurrency, payload) { |