You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.2 KiB
38 lines
1.2 KiB
// async-each MIT license (by Paul Miller from https://paulmillr.com). |
|
(function(globals) { |
|
'use strict'; |
|
var each = function(items, next, callback) { |
|
if (!Array.isArray(items)) throw new TypeError('each() expects array as first argument'); |
|
if (typeof next !== 'function') throw new TypeError('each() expects function as second argument'); |
|
if (typeof callback !== 'function') callback = Function.prototype; // no-op |
|
|
|
if (items.length === 0) return callback(undefined, items); |
|
|
|
var transformed = new Array(items.length); |
|
var count = 0; |
|
var returned = false; |
|
|
|
items.forEach(function(item, index) { |
|
next(item, function(error, transformedItem) { |
|
if (returned) return; |
|
if (error) { |
|
returned = true; |
|
return callback(error); |
|
} |
|
transformed[index] = transformedItem; |
|
count += 1; |
|
if (count === items.length) return callback(undefined, transformed); |
|
}); |
|
}); |
|
}; |
|
|
|
if (typeof define !== 'undefined' && define.amd) { |
|
define([], function() { |
|
return each; |
|
}); // RequireJS |
|
} else if (typeof module !== 'undefined' && module.exports) { |
|
module.exports = each; // CommonJS |
|
} else { |
|
globals.asyncEach = each; // <script> |
|
} |
|
})(this);
|
|
|