add async utils

This commit is contained in:
Christopher Jeffrey 2016-02-08 17:03:31 -08:00
parent 58a859267c
commit 8fd883b6c6

View File

@ -1366,3 +1366,44 @@ utils.ccmp = function(a, b) {
return res === 0;
};
utils.iter = function iter(from, to, iter, callback) {
var pending = to - from;
var i;
callback = utils.asyncify(callback);
if (pending <= 0)
return callback();
function next(err) {
if (err)
return callback(err);
if (!--pending)
callback();
}
for (i = from; i < to; i++)
iter(i, next);
};
utils.forEach = function forEach(arr, iter, callback) {
var pending = arr.length;
var i;
callback = utils.asyncify(callback);
if (!pending)
return callback();
function next(err) {
if (err)
return callback(err);
if (!--pending)
callback();
}
arr.forEach(function(item) {
iter(item, next);
});
};