node.js异步每个函数回调失败

时间:2015-04-29 02:04:34

标签: javascript node.js asynchronous callback

我正在调用我的数据库,并希望使用结果将请求发送到另一台服务器,然后处理响应。我想以异步方式执行此操作,因此我尝试使用异步库。

var sendRequest = function (store) {

    console.log(store);
}

connection.connect();

connection.query('SELECT * from stores', function(err, rows, fields) {
    if (!err){
        async.each(rows, function(row, sendRequest) {
            var store = {id: row.id, address: row.address};
            //console.log(store); <-- this works
            sendRequest(store); <-- this logs {id: '', address: null} only once
        }, function(err){
            console.log(err);
        });
    }
    else
        console.log('Error performing query');
});

connection.end();

如果我直接记录store变量,它会正确记录数组行中的每个实例。如果我尝试通过sendRequest回调来执行它,它只执行一次且不正确。

1 个答案:

答案 0 :(得分:2)

你混淆了一些事情。您对sendRequest回调使用了相同的名称each。你应该这样做:

connection.query('SELECT * from stores', function(err, rows, fields) {
  if (!err){
    async.each(rows, function(row, callback) {
        var store = {id: row.id, address: row.address};
        sendRequest(store);
        callback();

    }, function(err){
        console.log(err);
    });
  }
  else
    console.log('Error performing query');
});