在写一个自己的小项目的时候发现如果逻辑稍微复杂一点,就会陷入很多的嵌套中,这也就是所谓的回调地狱。以前的写法可能是这样
conn.query('sql',function(err,data){
if(err) {
console.log(err);
}else {
conn.query('sql',function(err,data){
if(err) {
console.log(err);
}else {
conn.query('sql',function(err,data){
if(err) {
console.log(err);
}else {
......
}
});
}
});
}
});
这样就很不友好了,逻辑一多,思维就会很乱,不好维护了。
接着就逼着自己学习async了。它可以用下面的方式去做这件事
async.waterfall([
function(callback){
connection.query('sql',function(err,data){
callback(null, data);
})
},
function (data, callback){
var result = data;
//console.log(result+"\n------------------------");
result.forEach(function(r){
console.log(r);
});
connection.query('sql',function(err,data){
callback(null, data);
});
},
function (data, callback){
var result = data;
result.forEach(function(r){
console.log(r);
});
}
], function (err, result) {
console.log(result);
});