目录
article
Node.js 之链式回调
Node.js 之链式回调
/* 前言:
使用异步函数的时候,如果两个函数都在事件队列上,无法保证他们的执行顺序,解决这一问题的最佳方法是让来自异步函数的回调再次调用该函数,
直到没有更多的工作要做,以执行链式回调。
*/
//定义 logCar 函数,输出针对车的描述,同时在接下来的事件队列中立即调用回调函数
function logCar(car,callback){
console.log("Saw a %s",car);
if(cars.length){
process.nextTick(function(){
callback();
});
}
}
//pop() 方法用于删除并返回数组中的最后一个元素,然后使用递归的方式接着调用 logCar 方法,当 cars 数组为空时,不再调用回调函数
function logCars(){
var car = cars.pop();
logCar(car,function(){
logCars(car);
});
}
var cars = ["Ferrari","Porsche","Bugatti","Lamborghini","Aston Martin"];
logCars(cars);
执行结果:
Saw a Aston Martin
Saw a Lamborghini
Saw a Bugatti
Saw a Porsche
Saw a Ferrari