diff --git a/lib/bcoin/utils.js b/lib/bcoin/utils.js index 4e83fa9d..ede01f45 100644 --- a/lib/bcoin/utils.js +++ b/lib/bcoin/utils.js @@ -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); + }); +};