Promise解决AJAX异步问题

来源:互联网 发布:淘宝店铺推广平台 编辑:程序博客网 时间:2024/05/01 04:37

目的:使多个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);