nodejs async之waterfall接口连续多次查表最终返回结果

匿名 (未验证) 提交于 2019-12-03 00:27:02

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(); });





标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!