diff options
-rw-r--r-- | lib/internal/queue.js | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/lib/internal/queue.js b/lib/internal/queue.js index 15fb950..7755504 100644 --- a/lib/internal/queue.js +++ b/lib/internal/queue.js @@ -70,13 +70,12 @@ export default function queue(worker, concurrency, payload) { if (q.idle()) { q.drain(); } - q.process(); + setImmediate(q.process); }); } var workers = 0; var workersList = []; - var isProcessing = false; var q = { _tasks: new DLL(), concurrency: concurrency, @@ -100,12 +99,6 @@ export default function queue(worker, concurrency, payload) { _insert(data, true, callback); }, process: function () { - // Avoid trying to start too many processing operations. This can occur - // when callbacks resolve synchronously (#1267). - if (isProcessing) { - return; - } - isProcessing = true; while(!q.paused && workers < q.concurrency && q._tasks.length){ var tasks = [], data = []; var l = q._tasks.length; @@ -129,7 +122,6 @@ export default function queue(worker, concurrency, payload) { var cb = onlyOnce(_next(tasks)); worker(data, cb); } - isProcessing = false; }, length: function () { return q._tasks.length; @@ -149,12 +141,7 @@ export default function queue(worker, concurrency, payload) { resume: function () { if (q.paused === false) { return; } q.paused = false; - var resumeCount = Math.min(q.concurrency, q._tasks.length); - // Need to call q.process once per concurrent - // worker to preserve full concurrency after pause - for (var w = 1; w <= resumeCount; w++) { - setImmediate(q.process); - } + setImmediate(q.process); } }; return q; |