目前我正在使用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函数中,如果满足某些要求,则将数据传递给另一个函数。如何在移动到下一个查询行之前确保首先完成
。提前谢谢!
答案 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);
});