diff options
author | Alexander Early <alex@npmjs.com> | 2019-05-24 11:20:56 -0700 |
---|---|---|
committer | Alexander Early <alex@npmjs.com> | 2019-05-24 11:20:56 -0700 |
commit | 7f54eec0736d28105d5a55a02e233d1a48db0f67 (patch) | |
tree | 11df8e76f5dadb7473dbe0c6d0b7e1061a7e26ee /lib/internal/queue.js | |
parent | fb79cab9f89a99672a304c9afaa9dd8dcaa2bdb9 (diff) | |
download | async-7f54eec0736d28105d5a55a02e233d1a48db0f67.tar.gz |
fix: don't completely flatten arrays pushed to queue/cargo. Fixes #1645
Diffstat (limited to 'lib/internal/queue.js')
-rw-r--r-- | lib/internal/queue.js | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/internal/queue.js b/lib/internal/queue.js index 0db96a8..01567aa 100644 --- a/lib/internal/queue.js +++ b/lib/internal/queue.js @@ -50,14 +50,10 @@ export default function queue(worker, concurrency, payload) { throw new Error('task callback must be a function'); } q.started = true; - if (Array.isArray(data)) { - if (data.length === 0 && q.idle()) { - // call drain immediately if there are no tasks - return setImmediate(() => trigger('drain')); - } + /*if (Array.isArray(data)) { return data.map(datum => _insert(datum, insertAtFront, callback)); - } + }*/ var res; @@ -151,6 +147,13 @@ export default function queue(worker, concurrency, payload) { started: false, paused: false, push (data, callback) { + if (Array.isArray(data)) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + return setImmediate(() => trigger('drain')); + } + return data.map(datum => _insert(datum, false, callback)) + } return _insert(data, false, callback); }, kill () { @@ -158,6 +161,13 @@ export default function queue(worker, concurrency, payload) { q._tasks.empty(); }, unshift (data, callback) { + if (Array.isArray(data)) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + return setImmediate(() => trigger('drain')); + } + return data.map(datum => _insert(datum, true, callback)) + } return _insert(data, true, callback); }, remove (testFn) { |