【vue】使用Promise方法保证按顺序执行

【vue】使用Promise方法保证按顺序执行

使用Promise方法可以叠加.then方法,来保证执行顺序。

queryTasksNum(){
      // TODO: 如果和queryImg都放在mounted里,会比后者执行得早
      // 查询未标记数量、已标记数量、已复核数量
      let that = this;
      var cntIm0 = 0;
      var cntIm1 = 0;
      var cntIm3 = 0;

      // TODO:如果是同步发送可能会出现问题
      function getNumIm0(){
        return new Promise(function(resolve){
          axios({
            method:'post',
            url:'/labelapi/queryTask',
            data: {
              "query_status": Number(localStorage.getItem('ms_userrole')) - 1
            },
            // headers:{"Content-Type":"multipart/form-data;"}
          }).then(function (response) {
            console.log('queryimg:', response.data)

            cntIm0 = response.data.assignnum;
            resolve(cntIm0);
          }).catch(function (error) {
            console.log(error);
          });
        });
      }
      function getNumIm1(){
        return new Promise(function(resolve){
          axios({
            method:'post',
            url:'/labelapi/queryTask',
            data: {
              "query_status": Number(localStorage.getItem('ms_userrole')),
              // 此处每页返回6个图

            },
            // headers:{"Content-Type":"multipart/form-data;"}
          }).then(function (response) {
            console.log('queryimg:', response.data)
            cntIm1 = response.data.assignnum;
            resolve(cntIm1);
          }).catch(function (error) {
            console.log(error);
          });
        });

      }
      function getNumIm3(){
        return new Promise(function(resolve){
          axios({
            method:'post',
            url:'/labelapi/queryTask',
            data: {
              "query_status": Number(localStorage.getItem('ms_userrole')) + 2,
              // 此处每页返回6个图

            },
            // headers:{"Content-Type":"multipart/form-data;"}
          }).then(function (response) {
            console.log('queryimg:', response.data)
            cntIm3 = response.data.assignnum;
            resolve(cntIm3);
          }).catch(function (error) {
            console.log(error);
          });
        });
      }
      getNumIm0()
      .then(function(data){
        console.log('cntIm0', data);
        return getNumIm1();
      })
      .then(function(data){
        console.log('cntIm1', data);
        return getNumIm3();
      })
      .then(function(data){
        console.log('cntIm3', data);

        // TODO:最好还是放在外边,想办法确保异步顺序
        // cntIm2 is error
        // var cntIm2 = that.imageList.length;
        var cntIm2 = that.imglength;
        console.log('queryTasksNum', cntIm0, cntIm1, cntIm2, cntIm3);
        that.completed=cntIm1 + cntIm2 + cntIm3;
        that.totalMission=cntIm0 + cntIm1 + cntIm2 + cntIm3;
        that.followed=cntIm2 + cntIm3;
        that.totalFollow=cntIm1 + cntIm2 + cntIm3;
        that.missionCompleted = ((cntIm1 + cntIm2 + cntIm3) / (cntIm0 + cntIm1 + cntIm2 + cntIm3) * 100).toFixed(2);
        if(isNaN(that.missionCompleted)){
          that.missionCompleted = 100;
        }
        that.followUpCompleted = ((cntIm2 + cntIm3) / (cntIm1 + cntIm2 + cntIm3) * 100).toFixed(2);
        if(isNaN(that.followUpCompleted)){
          that.followUpCompleted = 100;
        }
      });
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值