diff options
Diffstat (limited to 'lib/async.js')
-rw-r--r-- | lib/async.js | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/async.js b/lib/async.js index 45385f9..8560576 100644 --- a/lib/async.js +++ b/lib/async.js @@ -116,6 +116,13 @@ }); } + function _indexOf(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] === item) return i; + } + return -1; + } + var _keys = Object.keys || function (obj) { var keys = []; for (var k in obj) { @@ -524,12 +531,8 @@ listeners.unshift(fn); } function removeListener(fn) { - for (var i = 0; i < listeners.length; i += 1) { - if (listeners[i] === fn) { - listeners.splice(i, 1); - return; - } - } + var idx = _indexOf(listeners, fn); + if (idx >= 0) listeners.splice(idx, 1); } function taskComplete() { remainingTasks--; @@ -571,7 +574,7 @@ if (!(dep = tasks[requires[len]])) { throw new Error('Has inexistant dependency'); } - if (_isArray(dep) && !!~dep.indexOf(k)) { + if (_isArray(dep) && _indexOf(dep, k) >= 0) { throw new Error('Has cyclic dependencies'); } } |