From 1a88139f902c0826b4a8cf6e9bf62e2297c20a26 Mon Sep 17 00:00:00 2001 From: Graeme Yeates Date: Sat, 29 Aug 2015 07:26:02 -0400 Subject: Add dependency on ES5 stubs --- lib/async.js | 73 ++++++++++++++---------------------------------------- test/test-async.js | 10 -------- 2 files changed, 18 insertions(+), 65 deletions(-) diff --git a/lib/async.js b/lib/async.js index 1f1e0ef..8a8c963 100644 --- a/lib/async.js +++ b/lib/async.js @@ -54,13 +54,9 @@ }; } - //// cross-browser compatiblity functions //// + var _isArray = Array.isArray; - var _toString = Object.prototype.toString; - - var _isArray = Array.isArray || function (obj) { - return _toString.call(obj) === '[object Array]'; - }; + var _keys = Object.keys; // Ported from underscore.js isObject var _isObject = function(obj) { @@ -92,51 +88,19 @@ } } - function _map(arr, iterator) { - var index = -1, - length = arr.length, - result = Array(length); - - while (++index < length) { - result[index] = iterator(arr[index], index, arr); - } - return result; - } - function _range(count) { - return _map(Array(count), function (v, i) { return i; }); - } - - function _reduce(arr, iterator, memo) { - _arrayEach(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; + var arr = Array(count); + for (var i = 0; i < count; i++) arr[i] = i; + return arr; } function _forEachOf(object, iterator) { - _arrayEach(_keys(object), function (key) { - iterator(object[key], key); - }); - } - - function _indexOf(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === item) return i; + var keys = _keys(object); + for (var i = 0; i < keys.length; i++) { + iterator(object[keys[i]], keys[i]); } - return -1; } - var _keys = Object.keys || function (obj) { - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - function _keyIterator(coll) { var i = -1; var len; @@ -385,7 +349,7 @@ async.foldr = async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, identity).reverse(); + var reversed = arr.slice().reverse(); async.reduce(reversed, memo, iterator, callback); }; @@ -399,9 +363,9 @@ callback(); }); }, function () { - callback(_map(results.sort(function (a, b) { + callback(results.sort(function (a, b) { return a.index - b.index; - }), function (x) { + }).map(function (x) { return x.value; })); }); @@ -484,7 +448,7 @@ return callback(err); } else { - callback(null, _map(results.sort(comparator), function (x) { + callback(null, results.sort(comparator).map(function (x) { return x.value; })); } @@ -512,7 +476,7 @@ listeners.unshift(fn); } function removeListener(fn) { - var idx = _indexOf(listeners, fn); + var idx = listeners.indexOf(fn); if (idx >= 0) listeners.splice(idx, 1); } function taskComplete() { @@ -555,14 +519,14 @@ if (!(dep = tasks[requires[len]])) { throw new Error('Has inexistant dependency'); } - if (_isArray(dep) && _indexOf(dep, k) >= 0) { + if (_isArray(dep) && dep.indexOf(k) >= 0) { throw new Error('Has cyclic dependencies'); } } function ready() { - return _reduce(requires, function (a, x) { - return (a && results.hasOwnProperty(x)); - }, true) && !results.hasOwnProperty(k); + return requires.every(function(x) { + return results.hasOwnProperty(x); + }) && !results.hasOwnProperty(k); } if (ready()) { task[task.length - 1](taskCallback, results); @@ -580,7 +544,6 @@ }; - async.retry = function(times, task, callback) { var DEFAULT_TIMES = 5; var DEFAULT_INTERVAL = 0; @@ -901,7 +864,7 @@ q.tasks.splice(0, q.payload) : q.tasks.splice(0, q.tasks.length); - var data = _map(tasks, function (task) { + var data = tasks.map(function (task) { return task.data; }); diff --git a/test/test-async.js b/test/test-async.js index 18894b0..3601ccc 100755 --- a/test/test-async.js +++ b/test/test-async.js @@ -5,16 +5,6 @@ var async = require('../lib/async'); -if (!Function.prototype.bind) { - Function.prototype.bind = function (thisArg) { - var args = Array.prototype.slice.call(arguments, 1); - var self = this; - return function () { - self.apply(thisArg, args.concat(Array.prototype.slice.call(arguments))); - }; - }; -} - function eachIterator(args, x, callback) { setTimeout(function(){ args.push(x); -- cgit v1.2.1