目的:使多个ajax进程能有序的执行,而不是异步同时执行
第一步:给第一个ajax所在的函数(Ajax1)传递一个success参数(函数),当ajax执行完之后,调用success()函数。
第二步:如果后面还有要顺序执行的异步程序,可以参照第一步。
第三步:new Promise(Ajax1()).then(Ajax2);
第四步:如果有多个ajax(异步)需要顺序执行,
new Promise(Ajax1).then(function(){
return new Promise(Ajax2);
}).then(function(){
return new Promise(Ajax3);
}).then(Ajax4);
over:这样就完成了异步的进程完成顺序执行的要求
事例:异步使用setTimeout代替
function func1(success){
setTimeout(function(){
console.log("func1");
success();
},1000)
}
function func2(success){
setTimeout(function(){
console.log("func2");
success();
},1000)
}
function func3(success){
setTimeout(function(){
console.log("func3");
success();
},1000)
}
function func4(){
setTimeout(function(){
console.log("func4");
},1000)
}
new Promise(func1).then(function(){
return new Promise(func2);
}).then(function(){
return new Promise(func3);
}).then(func4);
扩展Promise.all:有三个异步必须都执行完后,才能执行第四个异步
Promise.all( [new Promise(func1), new Promise(func2), new Promise(func3)]).then(func4);
扩展:promise.race():三个异步中有一个执行完之后就执行第四个
Promise.race( [new Promise(func1), new Promise(func2), new Promise(func3)]).then(func4);