series函數 串行執行
async.series({
one: function(callback){callback(null, 1);
},
two: function(callback){
callback(null, 2);
}
},function(err, results) {
console.log(results);
});
如,數據庫插入前要找出一個最大ID,,
function (cb1) {
var sql = "SELECT MAX(PRODUCT_ID+1) AS id FROM product;";
Mysql.query(sql, function (err, data) {
new_productid = data[0].id;
console.log("新的productid是: "+new_productid);
cb1(err,data[0]);
});
},
//產品信息插入到 t10_product
function (cb2) {
var sql ="INSERT INTO `product` VALUES ('"+new_productid+"'巴拉巴拉")";
Mysql.query(sql, function (err, data) {
cb2(err,0);
});
},
最後所有的results和err 會彙總到最後的辣個function,results[0]指的是cb1過來的辣個
whilst官方給的栗子
var count = 0;
async.whilst(
function() { return count < 5; },
function(callback) {
count++;
setTimeout(function() {
callback(null, count);
}, 1000);
},
function (err, n) {
// 5 seconds have passed, n = 5
}
);
這次實際開發中需要循環數組,遍歷數組裏面元素將其插入,,異步會壞了循環插入,其實可以把callback往外面扔,但是這樣沒法獲取mysql.query中的err信息了。
var i = 0;
async.whilst(
function() { return i < data.length; },
function(callback) {
if(){
var sql="";
Mysql.query(sql,function (err,data) {
if(err)
callback(err,0);
else
callback(null,0);
});
}
else{
var sql="";
Mysql.query(sql,function (err,data) {
if(err)
callback(err,0);
else
callback(null,0);
});
}
i++;
},
function (err, data) {
cb5(err,data);
}
);