diff options
author | pkarimov <72779542+pkarimov@users.noreply.github.com> | 2020-10-17 11:58:20 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-17 11:58:20 -0700 |
commit | b0bc57154da84ca6472292ecd9363240b7b6b322 (patch) | |
tree | 5fbff588a52c395b1f4f66264bd77517241efe4e | |
parent | aff1716608b1a0ece2fdb18e32b969ea8ed48951 (diff) | |
download | async-b0bc57154da84ca6472292ecd9363240b7b6b322.tar.gz |
priorityQueue: Prevent same tick setImmediate (#1727)
Co-authored-by: Paul Karimov <pkarimov@microsoft.com>
-rw-r--r-- | lib/priorityQueue.js | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/priorityQueue.js b/lib/priorityQueue.js index 294e409..83d7429 100644 --- a/lib/priorityQueue.js +++ b/lib/priorityQueue.js @@ -28,6 +28,7 @@ import Heap from './internal/Heap'; export default function(worker, concurrency) { // Start with a normal queue var q = queue(worker, concurrency); + var processingScheduled = false; q._tasks = new Heap(); @@ -55,7 +56,13 @@ export default function(worker, concurrency) { q._tasks.push(item); } - setImmediate(q.process); + if (!processingScheduled) { + processingScheduled = true; + setImmediate(() => { + processingScheduled = false; + q.process(); + }); + } }; // Remove unshift function |