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裏有很多的方法 我這個是其中一個比較簡單 比較通用的方法