forEachAsync - browser and node ready
Go to file
AJ ONeal c543917f07 v5.x 2015-01-02 18:08:02 -07:00
examples v5.x 2015-01-02 18:08:02 -07:00
.gitignore ignore bower_components 2014-01-22 12:46:07 -07:00
LICENSE let's not forget the all-powerful license 2013-08-06 02:53:28 -07:00
README.md v5.x 2015-01-02 18:08:02 -07:00
bower.json updated metadata 2014-01-13 16:07:10 -07:00
forEachAsync.js v5.x 2015-01-02 18:08:02 -07:00
package.json v5.x 2015-01-02 18:08:02 -07:00
test-bluebird.js v5.x 2015-01-02 18:08:02 -07:00
test-native.js v5.x 2015-01-02 18:08:02 -07:00

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 over
  • callback Function to execute for each element, takes 4 arguments
    • element a single element of the aforementioned array
    • index the index of the current element
    • array the same array mentioned above
  • thisArg Object to use as this when executing callback

forEachAsync#then(done)

Parameters

  • then is in the return value of forEachAsync and accepts a final done callback.
    • done called after forEachAsync 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.