diff options
-rw-r--r-- | lib/internal/queue.js | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/internal/queue.js b/lib/internal/queue.js index 9debd64..e3887cb 100644 --- a/lib/internal/queue.js +++ b/lib/internal/queue.js @@ -1,6 +1,7 @@ import arrayEach from 'lodash/_arrayEach'; import isArray from 'lodash/isArray'; import noop from 'lodash/noop'; +import rest from 'lodash/rest'; import onlyOnce from './onlyOnce'; import setImmediate from './setImmediate'; @@ -45,16 +46,14 @@ export default function queue(worker, concurrency, payload) { } function _next(tasks) { - return function(){ + return rest(function(args){ workers -= 1; - var removed = false; - var args = arguments; arrayEach(tasks, function (task) { arrayEach(workersList, function (worker, index) { - if (worker === task && !removed) { + if (worker === task) { workersList.splice(index, 1); - removed = true; + return false; } }); @@ -69,11 +68,11 @@ export default function queue(worker, concurrency, payload) { q.unsaturated(); } - if (q._tasks.length + workers === 0) { + if (q.idle()) { q.drain(); } q.process(); - }; + }); } var workers = 0; |