summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraeme Yeates <yeatesgraeme@gmail.com>2015-08-29 07:26:02 -0400
committerGraeme Yeates <yeatesgraeme@gmail.com>2015-08-29 07:26:02 -0400
commit1a88139f902c0826b4a8cf6e9bf62e2297c20a26 (patch)
tree927cec471bf80fc16b8ab432537e566d0460cb75
parentb2fded336afaef589eddb602b29a228faffcb21e (diff)
downloadasync-es5-dep.tar.gz
Add dependency on ES5 stubses5-dep
-rw-r--r--lib/async.js73
-rwxr-xr-xtest/test-async.js10
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);