Js Promise的并行和串行


Promise 并行

Promise.all是所有的Promise执行完毕后(reject|resolve)返回一个Promise对象。最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消loding效果

// 项目中请求接口 function getShowProject(resolve, reject) { $.ajax({ url: `${api}/rrz/member/showProjectById`, type: 'get', data: { appId: appId }, success: function (res) { if (res.result == 'success') { gather['listBy'] = res.data; resolve(); } } }); } function getProjectPic(resolve, reject) { ... } function projectRelation(resolve, reject) { ... } function queryProjectDynamicS(resolve, reject) { ... } function showProjectLoveValue(resolve, reject) { ... } function getAppProjectDonorComment(resolve, reject) { ... } // 等待接口全部请求完成后 刷新页面 var a1 = new Promise(getShowProject); var a2 = new Promise(getProjectPic); var a3 = new Promise(projectRelation); var a4 = new Promise(queryProjectDynamicS); var a5 = new Promise(showProjectLoveValue); var a6 = new Promise(getAppProjectDonorComment); Promise.all([a1, a2, a2, a3, a4, a5, a6]).then(function () { info = { data: gather } getDetail(); console.log('loading效果图消失'); })

广州品牌设计公司https://www.houdianzi.com PPT模板下载大全https://redbox.wode007.com

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 // 最后执行


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM