I had an async.queue implementation on my node js app but the queue.drain function recently stopped firing at all.
I suspected the issue was related to await statements I have inside task functions but I also am able to reproduce the issue using the sample on async docs
const async = require('async') var q = async.queue(function(task, callback) { console.log('hello ' + task.name); callback(); }, 1); q.drain(function() { console.log('all items have been processed'); }); q.push({name: 'bar'}); q.push({name: 'foo'}, function(err) { console.log('finished processing foo'); });
This will output the following on my console but not the drain statement. So is there something I am missing?
hello bar
hello foo
finished processing foo
Advertisement
Answer
Interestingly, converting the drain function into an arrow function resolved the issue.
q.drain = function () { console.log('all items have been processed'); } q.drain(() => { console.log('all items have been processed'); }