|
|
- // 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);
|