39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // 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);
 |