summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpkarimov <72779542+pkarimov@users.noreply.github.com>2020-10-17 11:58:20 -0700
committerGitHub <noreply@github.com>2020-10-17 11:58:20 -0700
commitb0bc57154da84ca6472292ecd9363240b7b6b322 (patch)
tree5fbff588a52c395b1f4f66264bd77517241efe4e
parentaff1716608b1a0ece2fdb18e32b969ea8ed48951 (diff)
downloadasync-b0bc57154da84ca6472292ecd9363240b7b6b322.tar.gz
priorityQueue: Prevent same tick setImmediate (#1727)
Co-authored-by: Paul Karimov <pkarimov@microsoft.com>
-rw-r--r--lib/priorityQueue.js9
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