async֮waterfall:
async.waterfall(tasks,callback)
瀑布流函数,串行依次执行数组中函数,直至回调。
参数tasks为数组,其包含需依次执行之函数。
第二个参数为回调函数,有误则行之以馈其错,无误则tasks完毕后行之。
var async = require('async'); const mysql = require ('mysql'); var mysqlconfig=require('./config/mysql_config/mysql_config').mysqlconfig; var db = mysql.createConnection(mysqlconfig); var sqlaccountWithsessionid = 'SELECT account FROM user_tb WHERE sessionid =?'; var sqlsnWithaccount = 'SELECT sn FROM relate_tb WHERE account =?'; var sqlaccount = 'SELECT account FROM dev_tb WHERE sn =?'; var sessionid='25kq5plr2lg'; var tasks = [ function(callback) { db.beginTransaction(function(err) { callback(err); }); }, function(callback) { //select user_tb db.query(sqlaccountWithsessionid,sessionid, function(err, result) { console.log('sql account With sessionid result:',result[0].account); callback(err, result[0].account); }); }, function(account,callback) { //select relate_tb db.query(sqlsnWithaccount,account, function(err, result) { console.log('sql sn With accunt result::',result[0].sn); callback(err, result[0].sn); }); }, function(sn,callback) { //select dev_tb db.query(sqlaccount,sn, function(err, result) { console.log('sql account result :',result[0].account); callback(err, result[0].account); }); }, function(account,callback) { db.commit(function(err) { callback(err,account); }); }]; async.waterfall(tasks, function(err, results) { if(err) { console.log(err); db.rollback(); // 发生错误事务回滚 }else{ console.log('## the result after tasks:',results); } db.end(); });