Skip to content

Commit

Permalink
fix: don't completely flatten arrays pushed to queue/cargo. Fixes #1645
Browse files Browse the repository at this point in the history
  • Loading branch information
aearly committed May 24, 2019
1 parent fb79cab commit 7f54eec
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
22 changes: 16 additions & 6 deletions lib/internal/queue.js
Expand Up @@ -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;

Expand Down Expand Up @@ -151,13 +147,27 @@ 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 () {
off()
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) {
Expand Down
20 changes: 19 additions & 1 deletion test/queue.js
Expand Up @@ -264,6 +264,24 @@ describe('queue', function(){
done();
});

it('push with arrays', (done) => {
const tasks = []
var q = async.queue((task, cb) => {
tasks.push(task)
cb()
}, 1);

q.push([[1, 2, 3], [4, 5, 6]])

q.drain(() => {
expect(tasks).to.eql([
[1, 2, 3],
[4, 5, 6]
])
done()
})
})

it('unshift', (done) => {
var queue_order = [];

Expand Down Expand Up @@ -607,7 +625,7 @@ describe('queue', function(){
});

expect(q.started).to.equal(false);
q.push([]);
q.push('a');
expect(q.started).to.equal(true);

This comment has been minimized.

Copy link
@Jeaninevr198

Jeaninevr198 Sep 1, 2019

@sqs

`_[

  1. #1346

](url)_`

done();
});
Expand Down

0 comments on commit 7f54eec

Please sign in to comment.