7.JavaScript-Promise的并行和串行
程序员文章站
2023-12-25 09:18:03
Promise 并行 Promise.all是所有的Promise执行完毕后(reject|resolve)返回一个Promise对象。 最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消loding效果 1 // 项目中请求接口 2 function getShowProject(res ......
promise 并行
promise.all是所有的promise执行完毕后(reject|resolve)返回一个promise对象。
最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消loding效果
1 // 项目中请求接口 2 function getshowproject(resolve, reject) { 3 $.ajax({ 4 url: `${api}/rrz/member/showprojectbyid`, 5 type: 'get', 6 data: { appid: appid }, 7 success: function (res) { 8 if (res.result == 'success') { 9 gather['listby'] = res.data; 10 resolve(); 11 } 12 } 13 }); 14 } 15 function getprojectpic(resolve, reject) { 16 ... 17 } 18 function projectrelation(resolve, reject) { 19 ... 20 } 21 function queryprojectdynamics(resolve, reject) { 22 ... 23 } 24 function showprojectlovevalue(resolve, reject) { 25 ... 26 } 27 function getappprojectdonorcomment(resolve, reject) { 28 ... 29 } 30 // 等待接口全部请求完成后 刷新页面 31 var a1 = new promise(getshowproject); 32 var a2 = new promise(getprojectpic); 33 var a3 = new promise(projectrelation); 34 var a4 = new promise(queryprojectdynamics); 35 var a5 = new promise(showprojectlovevalue); 36 var a6 = new promise(getappprojectdonorcomment); 37 promise.all([a1, a2, a2, a3, a4, a5, a6]).then(function () { 38 info = { data: gather } 39 getdetail(); 40 console.log('loading效果图消失'); 41 })
promise 串行
在项目的实际操作中会用到串行调用方法的情况,实现异步执行,例如
有三个方法,方法一、方法二、方法三,需要执行完方法一之后执行方法二,执行完方法二之后执行方法三,可以用promise实现,简单的模拟做法如下:
function one(){ console.log(11111); } function two(){ console.log(22222); } function three(){ console.log(33333); } function fivep(func){ return new promise(function(resolve, reject) { func(); resolve(); }); } p.then(fivep(one)) .then(fivep(three)) .then(fivep(two)) .then(function(result) { console.log('最后执行' + result); }); // 执行结果 // 1111 // 3333 // 2222 // 最后执行