我有以下代码:
async.parallel({
one: function(callback) { gps_helper.get_gps(PEMSID, conn, start, stop, function(fullResults){
callback(fullResults);
}) }, //query for new dataSet
two: function(callback) { admin.getTh(function(gpsThresholds){
callback(gpsThresholds);
}) }
},
function(results){
console.log(results);
console.log('emitting GPS...');
socket.emit('GPS', {gpsResults: results.one, thresholds: results.two, PEMSID: PEMSID, count: count, length: PEMSToDisplay.length, checked: checked});
count++;
});
这不起作用,我的控制台显示在回调中完成的第一个查询results
。输出中也没有{one: fullResults, two: gpsThresholds}
格式,它只是从各自的函数中显示回调值。
答案 0 :(得分:4)
异步回调的第一个参数应该是错误对象,所以如果一切正常,它应该真的返回null
function(err, results){
console.log(results);
console.log('emitting GPS...');
socket.emit('GPS', {gpsResults: results.one, thresholds: results.two, PEMSID: PEMSID, count: count, length: PEMSToDisplay.length, checked: checked});
count++;
});
同样适用于回调
callback(null, fullResults);
等,将null
传递给错误处理程序异步回调
documentation中有一个例子,显示了它是如何完成的。