queue.drain上的node.jsasynchronouscallback错误

我正在尝试使用callback来指示所有的async工作完成,但我越来越可怕了

TypeError:callback不是一个函数

我想单独处理数据中的每个元素,并在完成时,让queue.drain发送callback(data)来完成callback(data)刷新。 我一直在准备asynchronous文档 ,但显然我没有得到什么东西。

 function refreshData(postData, callback) { var options = { host: 'www.myhost.com', port: 443, path: '/pulldata, method: 'POST', headers: { "Content-Type": "application/json" } }; var req = https.request(options, function(res) { var headers = res.headers var d = ''; res.setEncoding('utf8'); res.on('data', function (chunk) { d = d + chunk; }); res.on('end', function() { if (res.statusCode == '200') { data = JSON.parse(d); queue = async.queue(function (task, cb) { processData(task,cb); },1); //this is were the errors are queue.drain = function() { callback(data) }; for(i=0; i<data.length; i++) { queue.push(data[i],''); } } else { callback(false) } }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); // write data to request body req.write(postData); req.end(); } 

任何援助将不胜感激!

编辑,添加一些伪代码来演示如何使用refreshData:

 Node https.createServer(req,res) { req.on(){ read userData } req.end(){ validateUser(userData, function(callbackData) { if(callbackData==false) { //bad user or error with request res.writeHead(404); res.end('bye'); } else { //good user and responses res.writeHead(200); res.end(callbackData); } }) } } function validateUser(userData,callback) { //do some stuff to validate if(userData is good) { //call refreshData if user refreshData(userData,callback) } else { callback(false) } } 

[编辑]增加了一个callback正如在你指出的文件中给出,改变这一行

 queue.push(data[i],''); 

 queue.push(data[i], function(err){ // handle error }); 

在这里试试async-queue-callback