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`. | 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. | 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 | Screencast | ||||||
| --- | --- | ||||||
| 
 | 
 | ||||||
| <https://youtu.be/O7egvEz4scA> | <http://youtu.be/O7egvEz4scA> | ||||||
| 
 | 
 | ||||||
| Usage | Usage | ||||||
| ----- | ----- | ||||||
| @ -64,17 +62,18 @@ You can install from bower: | |||||||
| bower install --save forEachAsync@5.x | 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 | ```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 | ```javascript | ||||||
| (function () { | (function () { | ||||||
|   'use strict'; |   'use strict'; | ||||||
| 
 | 
 | ||||||
|   var forEachAsync = window.forEachAsync; |   var forEachAsync = window.forEachAsync | ||||||
|  |     ; | ||||||
| 
 | 
 | ||||||
|   // do stuff ... |   // do stuff ... | ||||||
| }()); | }()); | ||||||
| @ -86,7 +85,7 @@ Node Installation | |||||||
| === | === | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| npm install --save foreachasync@5.x | npm install --save forEachAsync@5.x | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| API | API | ||||||
|  | |||||||
| @ -2,15 +2,17 @@ | |||||||
| ;(function (exports) { | ;(function (exports) { | ||||||
|   'use strict'; |   'use strict'; | ||||||
| 
 | 
 | ||||||
|   var BREAK = {}; |   var BREAK = {} | ||||||
|   var exp = {}; |     , exp = {} | ||||||
|  |     ; | ||||||
| 
 | 
 | ||||||
|   function create(PromiseA) { |   function create(PromiseA) { | ||||||
|     PromiseA = PromiseA.Promise || PromiseA; |     PromiseA = PromiseA.Promise || PromiseA; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     function forEachAsync(arr, fn, thisArg) { |     function forEachAsync(arr, fn, thisArg) { | ||||||
|       var result = PromiseA.resolve(); |       var result = PromiseA.resolve() | ||||||
|  |         ; | ||||||
| 
 | 
 | ||||||
|       arr.forEach(function (item, k) { |       arr.forEach(function (item, k) { | ||||||
|         result = result.then(function () { |         result = result.then(function () { | ||||||
| @ -24,8 +26,8 @@ | |||||||
|             ret = result = fn(item, k, arr); |             ret = result = fn(item, k, arr); | ||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
|           if (!ret || !ret.then) { |           if (!ret.then) { | ||||||
|             ret = PromiseA.resolve(ret); |             ret = PromiseA.resolve(result); | ||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
|           return ret.then(function (val) { |           return ret.then(function (val) { | ||||||
| @ -59,15 +61,24 @@ | |||||||
|   exports.create = forEachAsync.create = function () {}; |   exports.create = forEachAsync.create = function () {}; | ||||||
|   */ |   */ | ||||||
| 
 | 
 | ||||||
|   /* globals Promise */ | 
 | ||||||
|   if ('undefined' !== typeof Promise) { |   try {  | ||||||
|     exp.forEachAsync = create(Promise); |    exp.forEachAsync = create(require('bluebird')); | ||||||
|   } |   } catch(e) { | ||||||
|   else { |     if ('undefined' !== typeof PromiseA) { | ||||||
|     try { |       exp.forEachAsync = create(Promise); | ||||||
|      exp.forEachAsync = create(require('bluebird')); |     } else { | ||||||
|     } catch(e) { |       try {  | ||||||
|       console.warn("This version of node doesn't support promises. Please `npm install --save bluebird` in your project."); |        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; |   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", |   "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", |   "description": "A node- and browser-ready async (now with promises) counterpart of Array.prototype.forEach", | ||||||
|   "homepage": "https://git.coolaj86.com/coolaj86/foreachasync.js", |   "homepage": "https://github.com/FuturesJS/forEachAsync", | ||||||
|   "main": "foreachasync.js", |   "main": "forEachAsync.js", | ||||||
|   "files": [], |  | ||||||
|   "directories": { |   "directories": { | ||||||
|     "test": "test" |     "test": "test" | ||||||
|   }, |   }, | ||||||
| @ -13,7 +12,7 @@ | |||||||
|   }, |   }, | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
|     "url": "https://git.coolaj86.com/coolaj86/foreachasync.js.git" |     "url": "git://github.com/FuturesJS/forEachAsync.git" | ||||||
|   }, |   }, | ||||||
|   "keywords": [ |   "keywords": [ | ||||||
|     "futuresjs", |     "futuresjs", | ||||||
| @ -26,13 +25,14 @@ | |||||||
|     "promises", |     "promises", | ||||||
|     "each" |     "each" | ||||||
|   ], |   ], | ||||||
|   "trulyOptionalDependencies": { |   "optionalDependencies": { | ||||||
|     "bluebird": "^3.5.1" |     "bluebird": "^2.5.3" | ||||||
|   }, |   }, | ||||||
|   "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)", |   "author": "AJ ONeal <coolaj86@gmail.com> (http://coolaj86.com/)", | ||||||
|   "license": "(MIT OR Apache-2.0)", |   "license": "Apache2", | ||||||
|   "bugs": { |   "bugs": { | ||||||
|     "url": "https://git.coolaj86.com/coolaj86/foreachasync.js/issues" |     "url": "https://github.com/FuturesJS/forEachAsync/issues" | ||||||
|   }, |   }, | ||||||
|   "dependencies": {} |   "dependencies": { | ||||||
|  |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,14 +1,16 @@ | |||||||
| (function () { | (function () { | ||||||
|   "use strict"; |   "use strict"; | ||||||
| 
 | 
 | ||||||
|   var PromiseA = require('bluebird'); |   var PromiseA = require('bluebird') | ||||||
|   var forEachAsync = require('./forEachAsync').forEachAsync; |     , forEachAsync = require('./forEachAsync').forEachAsync | ||||||
|   var context = {}; |     , context = {} | ||||||
|  |     ; | ||||||
| 
 | 
 | ||||||
|   forEachAsync([0, 500, 70, 200, 400, 100], function (element, i, arr) { |   forEachAsync([0, 500, 70, 200, 400, 100], function (element, i, arr) { | ||||||
|     console.log(i, '/', arr.length, 'began'); |     console.log(i, '/', arr.length, 'began'); | ||||||
| 
 | 
 | ||||||
|     var result; |     var result | ||||||
|  |       ; | ||||||
| 
 | 
 | ||||||
|     // test that thisness is applied
 |     // test that thisness is applied
 | ||||||
|     this[element] = i; |     this[element] = i; | ||||||
| @ -18,7 +20,7 @@ | |||||||
|       result = PromiseA.resolve(); |       result = PromiseA.resolve(); | ||||||
|     } else { |     } else { | ||||||
|       // test asynchronous callbacks
 |       // test asynchronous callbacks
 | ||||||
|       result = new PromiseA(function (resolve/*, reject*/) { |       result = new Promise(function (resolve/*, reject*/) { | ||||||
|         setTimeout(resolve, element); |         setTimeout(resolve, element); | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,12 +1,13 @@ | |||||||
| (function () { | (function () { | ||||||
|   "use strict"; |   "use strict"; | ||||||
| 
 | 
 | ||||||
|   /* globals Promise */ |   var forEachAsync = require('./forEachAsync').forEachAsync.create(Promise) | ||||||
|   var forEachAsync = require('./forEachAsync').forEachAsync.create(Promise); |     , context = {} | ||||||
|   var context = {}; |     ; | ||||||
| 
 | 
 | ||||||
|   forEachAsync([0, 500, 70, 200, 400, 100], function (element, i, arr) { |   forEachAsync([0, 500, 70, 200, 400, 100], function (element, i, arr) { | ||||||
|     var p; |     var p | ||||||
|  |       ; | ||||||
| 
 | 
 | ||||||
|     // test that thisness is applied
 |     // test that thisness is applied
 | ||||||
|     this[element] = i; |     this[element] = i; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user