2

目前我正在使用 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 函数中,如果满足某些要求,它会将数据传递给另一个函数。如何确保在移动到下一个查询行之前先完成这些操作?

先感谢您!

4

2 回答 2

4

如果您的函数支持在其工作完成时调用的回调参数,那么您可以使用库的forEachSerial方法非常干净地完成此操作。asyncdoThis

像这样的东西:

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
    });
});
于 2012-10-19T00:30:12.527 回答
0

result每行数据都会触发事件,请参阅文档

connection.query('select * from data')
  .on('result', function(row) {
     doThis(row.axn, row.dnq, row.bgq);
  });
于 2012-10-19T01:04:32.860 回答