当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 7.JavaScript-Promise的并行和串行

7.JavaScript-Promise的并行和串行

2019年11月13日  | 移动技术网IT编程  | 我要评论

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

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网