等到foreach结束

时间:2012-10-19 00:21:43

标签: javascript node.js

目前我正在使用node-mysql(https://github.com/felixge/node-mysql),并且对于每个结果,它从数据库返回我必须执行多个功能。目前,它试图一次完成所有内容,但无论如何都要等到每个函数完成之后才转移到mysql的下一个结果?

connection.query('select * from data', function(err, rows) {
for (var i = 0; i < rows.length; i++) {
     doThis(rows[i].axn, rows[i].dnq, rows[i].bgq);
 }
});

在doThis函数中,如果满足某些要求,则将数据传递给另一个函数。如何在移动到下一个查询行之前确保首先完成

提前谢谢!

2 个答案:

答案 0 :(得分:4)

如果您的async函数支持在工作完成时调用的回调参数,则可以使用doThis库的forEachSerial方法非常干净地执行此操作。

这样的事情:

connection.query('select * from data', function(err, rows) {
    async.forEachSeries(rows, function(row, callback) {
        doThis(row.axn, row.dnq, row.bgq, callback);
    }, function(err) {
        // All done
    });
});

答案 1 :(得分:0)

对每一行数据触发

result事件,请参阅documentation

connection.query('select * from data')
  .on('result', function(row) {
     doThis(row.axn, row.dnq, row.bgq);
  });