c543917f07 | ||
---|---|---|
examples | ||
.gitignore | ||
LICENSE | ||
README.md | ||
bower.json | ||
forEachAsync.js | ||
package.json | ||
test-bluebird.js | ||
test-native.js |
README.md
forEachAsync
Analogous to [].forEach
, but handles items asynchronously with a final callback passed to then
.
This is the most essential piece of the ArrayAsync
package.
v5.x
We jumped from 3.x to 5.x because I'm considering creating a backwards-and-forwards compatible 4.x that uses AngularJS-style function introspection to allow for having the next param. Straight up, that's probably a bad idea and waste of time so I hope I don't actually do it.
Usage
// EXAMPLE ASYNC FUNCTION
function getPicsAsync(animal) {
var flickerApi = "http://api.flickr.com/services/feeds/photos_public.gne?tagmode=any&format=json&tags=" + animal;
return requestAsync({ url: flickerApi });
}
forEachAsync(['dogs', 'cats', 'octocats'], function (element) {
return getPicsAsync(element);
}).then(function () {
// then after all of the elements have been handled
// the final callback fires to let you know it's all done
console.log('All requests have finished');
});
Supplying your own Promises Implementation
If native ES6 promises are not available, then you should supply your own Promises/A+ implementation like so:
forEachAsync = forEachAsync.create(window.Promise || require('bluebird'));
Browser Installation
You can install from bower:
bower install --save forEachAsync@5.x
Or download the raw file from https://raw.github.com/FuturesJS/forEachAsync/master/forEachAsync.js:
wget https://raw.github.com/FuturesJS/forEachAsync/master/forEachAsync.js
(function () {
'use strict';
var forEachAsync = window.forEachAsync
;
// do stuff ...
}());
Note: If you need both 3.x/4.x and 5.x version of forEachAsync
in the browser... good luck with that...
Node Installation
npm install --save forEachAsync@5.x
API
forEachAsync(array, callback[, thisArg])
Parameters
array
Array of elements to iterate overcallback
Function to execute for each element, takes 4 argumentselement
a single element of the aforementioned arrayindex
the index of the current elementarray
the same array mentioned above
thisArg
Object to use asthis
when executingcallback
forEachAsync#then(done)
Parameters
then
is in the return value offorEachAsync
and accepts a finaldone
callback.done
called afterforEachAsync
is complete, takes no arguments
Internal API
forEachAsync.__BREAK
This is used internally for the purposes of the ArrayAsync
library.
Please don't break
stuff; use ArrayAsync
.someAsync
or ArrayAsync
.everyAsync
instead.