1234567891011121314151617181920212223242526272829303132333435363738 |
- (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;
- 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;
- });
- } else if (typeof module !== 'undefined' && module.exports) {
- module.exports = each;
- } else {
- globals.asyncEach = each;
- }
- })(this);
|