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