Js Promise的并行和串行入门知识_Promise攻略教程

Promise 并行Promise.all是所有的Promise执行完毕后(reject|resolve)返回一个Promise对象。最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消loding效果// 项目中请求接口
function getShowProject(resolve, reject) {$.ajax({url: `${api}/r

Js Promise的并行和串行入门知识

Promise 并行

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

Js Promise的并行和串行入门知识_Promise攻略教程

// 项目中请求接口
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效果图消失');
  })

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
// 最后执行
海计划公众号
(0)
上一篇 2020/03/23 08:57
下一篇 2020/03/23 08:57

您可能感兴趣的内容