lib/function_flow.js
function forEach(data, task, callback) {

		var wrapTask,
		    isArray,
		    subject,
		    test,
		    len,
		    i;

		isArray = Array.isArray(data);
		i = -1;

		if (isArray) {
			subject = data;

			wrapTask = function wrapTask(next) {
				task(subject[i], i, next);
			};
		} else {
			subject = Bound.Object.dissect(data);

			wrapTask = function wrapTask(next) {
				task(subject[i].value, subject[i].key, next);
			};
		}

		len = subject.length;
		test = function test() {
			return ++i < len;
		};

		return Blast.Collection.Function['while'](test, wrapTask, callback);
	}
function forEach(data, task, callback) {

		var wrapTask,
		    isArray,
		    subject,
		    test,
		    len,
		    i;

		isArray = Array.isArray(data);
		i = -1;

		if (isArray) {
			subject = data;

			wrapTask = function wrapTask(next) {
				task(subject[i], i, next);
			};
		} else {
			subject = Bound.Object.dissect(data);

			wrapTask = function wrapTask(next) {
				task(subject[i].value, subject[i].key, next);
			};
		}

		len = subject.length;
		test = function test() {
			return ++i < len;
		};

		return Blast.Collection.Function['while'](test, wrapTask, callback);
	}
function forEach ( data , task , callback ) { var wrapTask , isArray , subject , test , len , i ; isArray = Array . isArray ( data ) ; i = - 1 ; if ( isArray ) { subject = data ; wrapTask = function wrapTask ( next ) { task ( subject [ i ] , i , next ) ; } ; } else { subject = Bound . Object . dissect ( data ) ; wrapTask = function wrapTask ( next ) { task ( subject [ i ] . value , subject [ i ] . key , next ) ; } ; } len = subject . length ; test = function test ( ) { return ++ i < len ; } ; return Blast . Collection . Function [ 'while' ] ( test , wrapTask , callback ) ; }
Do `task` for each entry in data serially

@author   Jelle De Loecker   <jelle@kipdola.be>
@since    0.1.4
@version  0.1.4

@param    {Function}   test
@param    {Function}   task
@param    {Function}   callback

@return   {Object}
Do task for each entry in data serially