Nodejs學習筆記(四)

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章