async.js并行无法正常工作

时间:2014-01-06 19:35:39

标签: node.js async.js

我有以下代码:

               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}格式,它只是从各自的函数中显示回调值。

1 个答案:

答案 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中有一个例子,显示了它是如何完成的。