借助Async.js可以简化和组织我们的多个异步函数,非常方便。
Async.js 本身使用在服务端-node.js 的,但它也可以用在浏览器端。
举例举例: 依旧是 a() -> b()-> c() 的调用序列:
async.series([function(callback){
a(callback);
}, function(callback){
b(callback);
}, function(callback){
c(callback);
}
]);function a(callback){
setTimeout(function(){//用timeout模拟回调方法返回,
console.log("a 方法回调方法结束");
callback();
}, 5000);
console.log("a 方法结束");
}
function b(callback){
setTimeout(function(){
console.log("b 方法回调方法结束");
callback();
}, 3000);
console.log("b 方法结束");
}
function c(callback){
setTimeout(function(){
console.log("c 方法回调方法结束");
callback();
}, 1000);
console.log("c 方法结束");
}
输出结果:
a 方法结束
a 方法回调方法结束
b 方法结束
b 方法回调方法结束
c 方法结束
c 方法回调方法结束
这就达到了我们的需要,在这里,需要主意的是,方法要改造一下
//方法参数可以多个,但最后一个必须是callback,
如: function(req,res, callback) 也是可以的
async.series([function(callback){
a(callback);
}........
async.js依赖nodeunit.js,且引入时必须在nodeunit.js之后
<script src="js/nodeunit.js"></script>
<script src="js/async.js"></script>
async的其它方法,和安装方式见官方网站
https://github.com/caolan/async