Compare commits
	
		
			No commits in common. "master" and "v5.0.2" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							| @ -1,8 +1,6 @@ | ||||
| forEachAsync.js | ||||
| forEachAsync | ||||
| === | ||||
| 
 | ||||
| | A [Root](https://rootprojects.org) project | ||||
| 
 | ||||
| Analogous to `[].forEach`, but handles items asynchronously with a final callback passed to `then`. | ||||
| 
 | ||||
| This is the most essential piece of the [`ArrayAsync`](https://github.com/FuturesJS/ArrayAsync) package. | ||||
| @ -21,7 +19,7 @@ Straight up, that's probably a bad idea and waste of time so I hope I don't actu | ||||
| Screencast | ||||
| --- | ||||
| 
 | ||||
| <https://youtu.be/O7egvEz4scA> | ||||
| <http://youtu.be/O7egvEz4scA> | ||||
| 
 | ||||
| Usage | ||||
| ----- | ||||
| @ -64,17 +62,18 @@ You can install from bower: | ||||
| bower install --save forEachAsync@5.x | ||||
| ``` | ||||
| 
 | ||||
| Or download the raw file from <https://git.coolaj86.com/coolaj86/foreachasync.js/raw/branch/master/foreachasync.js>: | ||||
| Or download the raw file from <https://raw.github.com/FuturesJS/forEachAsync/master/forEachAsync.js>: | ||||
| 
 | ||||
| ```bash | ||||
| wget https://git.coolaj86.com/coolaj86/foreachasync.js/raw/branch/master/foreachasync.js | ||||
| wget https://raw.github.com/FuturesJS/forEachAsync/master/forEachAsync.js | ||||
| ``` | ||||
| 
 | ||||
| ```javascript | ||||
| (function () { | ||||
|   'use strict'; | ||||
| 
 | ||||
|   var forEachAsync = window.forEachAsync; | ||||
|   var forEachAsync = window.forEachAsync | ||||
|     ; | ||||
| 
 | ||||
|   // do stuff ... | ||||
| }()); | ||||
| @ -86,7 +85,7 @@ Node Installation | ||||
| === | ||||
| 
 | ||||
| ```bash | ||||
| npm install --save foreachasync@5.x | ||||
| npm install --save forEachAsync@5.x | ||||
| ``` | ||||
| 
 | ||||
| API | ||||
|  | ||||
| @ -2,15 +2,17 @@ | ||||
| ;(function (exports) { | ||||
|   'use strict'; | ||||
| 
 | ||||
|   var BREAK = {}; | ||||
|   var exp = {}; | ||||
|   var BREAK = {} | ||||
|     , exp = {} | ||||
|     ; | ||||
| 
 | ||||
|   function create(PromiseA) { | ||||
|     PromiseA = PromiseA.Promise || PromiseA; | ||||
| 
 | ||||
| 
 | ||||
|     function forEachAsync(arr, fn, thisArg) { | ||||
|       var result = PromiseA.resolve(); | ||||
|       var result = PromiseA.resolve() | ||||
|         ; | ||||
| 
 | ||||
|       arr.forEach(function (item, k) { | ||||
|         result = result.then(function () { | ||||
| @ -24,8 +26,8 @@ | ||||
|             ret = result = fn(item, k, arr); | ||||
|           } | ||||
| 
 | ||||
|           if (!ret || !ret.then) { | ||||
|             ret = PromiseA.resolve(ret); | ||||
|           if (!ret.then) { | ||||
|             ret = PromiseA.resolve(result); | ||||
|           } | ||||
| 
 | ||||
|           return ret.then(function (val) { | ||||
| @ -59,15 +61,24 @@ | ||||
|   exports.create = forEachAsync.create = function () {}; | ||||
|   */ | ||||
| 
 | ||||
|   /* globals Promise */ | ||||
|   if ('undefined' !== typeof Promise) { | ||||
|     exp.forEachAsync = create(Promise); | ||||
|   } | ||||
|   else { | ||||
|     try { | ||||
|      exp.forEachAsync = create(require('bluebird')); | ||||
|     } catch(e) { | ||||
|       console.warn("This version of node doesn't support promises. Please `npm install --save bluebird` in your project."); | ||||
| 
 | ||||
|   try {  | ||||
|    exp.forEachAsync = create(require('bluebird')); | ||||
|   } catch(e) { | ||||
|     if ('undefined' !== typeof PromiseA) { | ||||
|       exp.forEachAsync = create(Promise); | ||||
|     } else { | ||||
|       try {  | ||||
|        exp.forEachAsync = create(require('es6-promise')); | ||||
|       } catch(e) { | ||||
|         try {  | ||||
|          exp.forEachAsync = create(require('rsvp')); | ||||
|         } catch(e) { | ||||
|           console.warning('forEachAsync needs requires a promise implementation and your environment does not provide one.' | ||||
|             + '\nYou may provide your own by calling forEachAsync.create(Promise) with a PromiseA+ implementation' | ||||
|           ); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| @ -76,4 +87,4 @@ | ||||
|   }; | ||||
|   exports.forEachAsync.create = create; | ||||
| 
 | ||||
| }('undefined' !== typeof exports && exports || window)); | ||||
| }('undefined' !== typeof exports && exports || new Function('return this')())); | ||||
							
								
								
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,5 +0,0 @@ | ||||
| { | ||||
|   "name": "foreachasync", | ||||
|   "version": "5.1.3", | ||||
|   "lockfileVersion": 1 | ||||
| } | ||||
							
								
								
									
										22
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								package.json
									
									
									
									
									
								
							| @ -1,10 +1,9 @@ | ||||
| { | ||||
|   "name": "foreachasync", | ||||
|   "version": "5.1.3", | ||||
|   "version": "5.0.2", | ||||
|   "description": "A node- and browser-ready async (now with promises) counterpart of Array.prototype.forEach", | ||||
|   "homepage": "https://git.coolaj86.com/coolaj86/foreachasync.js", | ||||
|   "main": "foreachasync.js", | ||||
|   "files": [], | ||||
|   "homepage": "https://github.com/FuturesJS/forEachAsync", | ||||
|   "main": "forEachAsync.js", | ||||
|   "directories": { | ||||
|     "test": "test" | ||||
|   }, | ||||
| @ -13,7 +12,7 @@ | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "https://git.coolaj86.com/coolaj86/foreachasync.js.git" | ||||
|     "url": "git://github.com/FuturesJS/forEachAsync.git" | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "futuresjs", | ||||
| @ -26,13 +25,14 @@ | ||||
|     "promises", | ||||
|     "each" | ||||
|   ], | ||||
|   "trulyOptionalDependencies": { | ||||
|     "bluebird": "^3.5.1" | ||||
|   "optionalDependencies": { | ||||
|     "bluebird": "^2.5.3" | ||||
|   }, | ||||
|   "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)", | ||||
|   "license": "(MIT OR Apache-2.0)", | ||||
|   "author": "AJ ONeal <coolaj86@gmail.com> (http://coolaj86.com/)", | ||||
|   "license": "Apache2", | ||||
|   "bugs": { | ||||
|     "url": "https://git.coolaj86.com/coolaj86/foreachasync.js/issues" | ||||
|     "url": "https://github.com/FuturesJS/forEachAsync/issues" | ||||
|   }, | ||||
|   "dependencies": {} | ||||
|   "dependencies": { | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,14 +1,16 @@ | ||||
| (function () { | ||||
|   "use strict"; | ||||
| 
 | ||||
|   var PromiseA = require('bluebird'); | ||||
|   var forEachAsync = require('./forEachAsync').forEachAsync; | ||||
|   var context = {}; | ||||
|   var PromiseA = require('bluebird') | ||||
|     , forEachAsync = require('./forEachAsync').forEachAsync | ||||
|     , context = {} | ||||
|     ; | ||||
| 
 | ||||
|   forEachAsync([0, 500, 70, 200, 400, 100], function (element, i, arr) { | ||||
|     console.log(i, '/', arr.length, 'began'); | ||||
| 
 | ||||
|     var result; | ||||
|     var result | ||||
|       ; | ||||
| 
 | ||||
|     // test that thisness is applied
 | ||||
|     this[element] = i; | ||||
| @ -18,7 +20,7 @@ | ||||
|       result = PromiseA.resolve(); | ||||
|     } else { | ||||
|       // test asynchronous callbacks
 | ||||
|       result = new PromiseA(function (resolve/*, reject*/) { | ||||
|       result = new Promise(function (resolve/*, reject*/) { | ||||
|         setTimeout(resolve, element); | ||||
|       }); | ||||
|     } | ||||
|  | ||||
| @ -1,12 +1,13 @@ | ||||
| (function () { | ||||
|   "use strict"; | ||||
| 
 | ||||
|   /* globals Promise */ | ||||
|   var forEachAsync = require('./forEachAsync').forEachAsync.create(Promise); | ||||
|   var context = {}; | ||||
|   var forEachAsync = require('./forEachAsync').forEachAsync.create(Promise) | ||||
|     , context = {} | ||||
|     ; | ||||
| 
 | ||||
|   forEachAsync([0, 500, 70, 200, 400, 100], function (element, i, arr) { | ||||
|     var p; | ||||
|     var p | ||||
|       ; | ||||
| 
 | ||||
|     // test that thisness is applied
 | ||||
|     this[element] = i; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user