Promise以及Promise.all的简单用法

Posted 尔嵘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise以及Promise.all的简单用法相关的知识,希望对你有一定的参考价值。

当你请求多个数据,相统一处理的时候,假设有两个单独的接口获取页面数据,两接口使用Promise处理是互不影响:

    //基础信息获取
    getPlantProductReportInfoItems() 
      return new Promise((resolve, reject) => 
        treeData[0].children = [];
        getPlantProductReportInfoItems()
          .then(( data: res ) => 
            console.log('res', res);
            if (res.code !== 0) 
              this.roleLoading = false;
              this.$message.config(
                maxCount: 1,
              );
              this.$message.destroy();
              return this.$message.error(res.msg);
            
            if (JSON.stringify(res.data) != '') 
              for (let item in res.data) 
                let arrobj = 
                  key: item,
                  title: res.data[item],
                  children: [],
                  // disabled: !item.includes(children) ? false : true
                ;
                treeData[0].children.push(arrobj);
              
            
            resolve();
          )
          .catch((error) => 
            //失败调用reject函数
            reject(error);
          );
      ).then((data) => );
    ,
    
    //统计数据
    getPlantProductReportDataItems() 
      return new Promise((resolve, reject) => 
        treeData[1].children = [];
        getPlantProductReportDataItems(
          dataType: this.dataForm.selectTime2Type,
        )
          .then(( data: res ) => 
            console.log('res', res);
            if (res.code !== 0) 
              this.roleLoading = false;
              this.$message.config(
                maxCount: 1,
              );
              this.$message.destroy();
              return this.$message.error(res.msg);
            
            if (JSON.stringify(res.data) != '') 
              let arrobj = ;
              for (let item in res.data) 
                arrobj = 
                  key: item,
                  title: res.data[item],
                  children: [],
                  // disabled: !item.includes(children) ? true : false
                ;
                treeData[1].children.push(arrobj);
              
            
            resolve();
          )
          .catch((error) => 
            //失败调用reject函数
            reject(error);
          );
      ).then((data) => );
    ,

使用Promise.all时,每一个promise对象都会返回自身。这样处理比之前一个个的调用接口速度快些。

//设置弹窗
handleSettingItems() 
      Promise.all([this.getPlantProductReportDataItems(),this.getPlantProductReportInfoItems()]).then(() => 
          transferDataSource = [];
          flatten(treeData);
          this.dataSource = transferDataSource;
          console.log("this.dataSource", this.dataSource);
          this.settingVisible = true;
        )
 ,

以上是关于Promise以及Promise.all的简单用法的主要内容,如果未能解决你的问题,请参考以下文章

实现promise.all方法

Promise.all的用法及其细节

Promise.all的用法及其细节

Promise.all的用法及其细节

Promise.all的用法及其细节

多个请求执行完再执行下一个方法(vue Promise.all用法)