Nodejs用async来处理异步问题:
今天在写mysql数据库操作的时候,发现当我要查询多条sql语句的时候 前一条的语句在后一条语句执行完的时候还没有完成,这个导致很多语句的返回值都是undefined
var subItems; connection.query($sql, [userID], function (err, result) { req.session.subItems = result; subItems = result; console.log(subItems);//上面这条能输出准确的结果 在后面执行 } console.log(subItems);//这条语句会比上一条先执行 所有导致这条语句的结果是undefined
采用aysnc就能够使上面的代码按照循序执行
async.series([ //第一个参数是一个函数数组 function (cb) { connection.query($sql, [userID], function (err, result) { req.session.subItems = result; subItems = result; cb(err,result) //把异常跟结果回调 }); },function (cb) { cb(err,user); } ],function (err,results) { //第二个参数function是回调函数 results是一个结果数组 if(err){ console.log(err) }else { console.log(results); } });
async里有很多的方法 我这个是其中一个比较简单 比较通用的方法