summaryrefslogtreecommitdiff
path: root/lib/async.js
diff options
context:
space:
mode:
authorAlexander Early <alexander.early@gmail.com>2015-07-02 00:26:16 -0700
committerAlexander Early <alexander.early@gmail.com>2015-07-02 00:26:16 -0700
commit9bdbb6452dbfcac9ff2d172489e5e0b639d8b9ff (patch)
tree1202f7795be2a2f3dba856ab24deb877fc99295a /lib/async.js
parentfd7a99c09ceca52e629f70d0ca4cd7a387fb07c1 (diff)
parentb4059e8f0c624a87f8ab5613b3cbc4f7bdc41898 (diff)
downloadasync-9bdbb6452dbfcac9ff2d172489e5e0b639d8b9ff.tar.gz
Merge pull request #823 from megawac/do-via-whilst
Implement doWhilst via whilst
Diffstat (limited to 'lib/async.js')
-rw-r--r--lib/async.js29
1 files changed, 12 insertions, 17 deletions
diff --git a/lib/async.js b/lib/async.js
index 67eb379..0cde368 100644
--- a/lib/async.js
+++ b/lib/async.js
@@ -778,31 +778,26 @@
async.whilst = function (test, iterator, callback) {
callback = callback || noop;
if (test()) {
- iterator(function (err) {
+ var next = _restParam(function(err, args) {
if (err) {
- return callback(err);
+ callback(err);
+ } else if (test.apply(this, args)) {
+ iterator(next);
+ } else {
+ callback(null);
}
- async.whilst(test, iterator, callback);
});
- }
- else {
+ iterator(next);
+ } else {
callback(null);
}
};
async.doWhilst = function (iterator, test, callback) {
- callback = callback || noop;
- iterator(_restParam(function (err, args) {
- if (err) {
- return callback(err);
- }
- if (test.apply(null, args)) {
- async.doWhilst(iterator, test, callback);
- }
- else {
- callback(null);
- }
- }));
+ var calls = 0;
+ return async.whilst(function() {
+ return ++calls <= 1 || test.apply(this, arguments);
+ }, iterator, callback);
};
async.until = function (test, iterator, callback) {