From ef05d55e1bbe1a8c823eaa4d5e0de6f5818ff27e Mon Sep 17 00:00:00 2001 From: Graeme Yeates Date: Sun, 3 Jul 2016 19:08:33 -0400 Subject: Optimize queue processing --- lib/internal/queue.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/internal/queue.js b/lib/internal/queue.js index 9debd64..dcf376e 100644 --- a/lib/internal/queue.js +++ b/lib/internal/queue.js @@ -1,6 +1,8 @@ import arrayEach from 'lodash/_arrayEach'; +import arraySome from 'lodash/_arraySome'; 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 +47,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) { + arraySome(workersList, function (worker, index) { + if (worker === task) { workersList.splice(index, 1); - removed = true; + return true; } }); @@ -69,11 +69,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; -- cgit v1.2.1 From f21e7dbeefe37d32d592cb80992def758c023629 Mon Sep 17 00:00:00 2001 From: Alexander Early Date: Thu, 7 Jul 2016 17:16:07 -0700 Subject: use each instead of some --- lib/internal/queue.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/internal/queue.js b/lib/internal/queue.js index dcf376e..e3887cb 100644 --- a/lib/internal/queue.js +++ b/lib/internal/queue.js @@ -1,5 +1,4 @@ import arrayEach from 'lodash/_arrayEach'; -import arraySome from 'lodash/_arraySome'; import isArray from 'lodash/isArray'; import noop from 'lodash/noop'; import rest from 'lodash/rest'; @@ -51,10 +50,10 @@ export default function queue(worker, concurrency, payload) { workers -= 1; arrayEach(tasks, function (task) { - arraySome(workersList, function (worker, index) { + arrayEach(workersList, function (worker, index) { if (worker === task) { workersList.splice(index, 1); - return true; + return false; } }); -- cgit v1.2.1