首页 > 其他分享 >同时调用多个异步请求

同时调用多个异步请求

时间:2023-11-17 15:13:06浏览次数:32  
标签:异步 genTable 调用 const 请求 res item Promise id

需求

为了减少页面等待时间,现有多个接口,需要同时调用。

解决

有两种写法:

Promise.all([interfaceName1(para1), interfaceName2(para2)]).then().catch()

Promise.all(arr)中的参数 arr :由接口名称(接口参数)组成的数组;

then((res) => {})中的结果 res:接口结果所组成的数组。

例1
    loadClsOps() {
      let promiseValues = [
        // 获取该项目所有的标准列表
        stanSelectOps({
          projectId: this.projectId,
        }),
        // 获取项目类数据
        getProClsByStan({
          projectId: this.projectId,
        }),
      ];
      Promise.all(promiseValues)
        .then((res) => {
          this.libList = res[0].data.map((e) => ({
            id: e.id,
            treeId: "stan+" + e.id,
            name: e.libraryName,
            type: 1,
            isStan: true,
          }));
          let proClsObj = res[1].data;
          // 拼接树选项:构造节点唯一标识 treeId
          this.clsOps = this.libList.map((item) => {
            let obj = { ...item };
            const { id, treeId } = item;
            const target = Object.keys(proClsObj).find((key) => key == id);
            if (target) {
              obj.children = this.prefixId(proClsObj[target], `${treeId}+`);
            }
            return obj;
          });
          console.log("clsOps:", this.clsOps, "libList:", this.libList);
        })
        .catch((err) => console.log({ err }));
    },
例2
    submitForm() {
      const basicForm = this.$refs.basicInfo.$refs.basicInfoForm;
      const genForm = this.$refs.genInfo.$refs.genInfoForm;
      Promise.all([basicForm, genForm].map(this.getFormPromise)).then((res) => {
        const validateResult = res.every((item) => !!item);
        if (validateResult) {
          const genTable = Object.assign({}, basicForm.model, genForm.model);
          genTable.columns = this.columns;
          genTable.params = {
            treeCode: genTable.treeCode,
            treeName: genTable.treeName,
            treeParentCode: genTable.treeParentCode,
            parentMenuId: genTable.parentMenuId,
          };
          updateGenTable(genTable).then((res) => {
            this.$modal.msgSuccess(res.msg);
            if (res.code === 200) {
              this.close();
            }
          });
        } else {
          this.$modal.msgError("表单校验未通过,请重新检查提交内容");
        }
      });
    },
    getFormPromise(form) {
      return new Promise((resolve) => {
        form.validate((res) => {
          resolve(res);
        });
      });
    },

asycn 和 await 结合 try{}catch(err){}

例子
async getAfterDetail () {
      try {
        const res = await getAfterDetail(this.$route.query.id)
        this.detail = res.data
        const res2 = await getDetailById(this.detail.saleOrderId)
        this.orderDetail = res2.data
      } catch (error) {
        console.log(error)
      }
    },

参考链接

Promise.all 多个接口同时调用

标签:异步,genTable,调用,const,请求,res,item,Promise,id
From: https://www.cnblogs.com/shayloyuki/p/17838784.html

相关文章

  • Spring Boot 自定义注解,AOP 切面统一打印出入参请求日志
    今天主要说说如何通过自定义注解的方式,在SpringBoot中来实现AOP切面统一打印出入参日志。小伙伴们可以收藏一波。废话不多说,进入正题!一、先看看切面日志输出效果在看看实现方法之前,我们先看下切面日志输出效果咋样:从上图中可以看到,每个对于每个请求,开始与结束一目了然,并且打印......
  • java RestTemplate 发送post请求
    RestTemplate简介RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(如JDKHttpURLConnection,ApacheHttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。即RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。相对于直接使用底层......
  • java中的异步任务处理和Feature接口
    简介Java并发包提供了一套框架,大大简化了执行异步任务所需要的开发。框架引入了“执行服务”的概念,封装了任务执行的细节,对任务提交者而言,他可以关注任务本身,如提交任务、获取结果、取消任务。而不用关注任务执行的细节。基本接口①Runnable和Callable:表示要执行的任务②Excecuto......
  • 小红书视频评论区提取工具,用户ID关键词用户采集,易语言调用谷歌内核实现
    这个原理就是调用了精易VIP模块的谷歌浏览器内核,然后截取数据包,网页会通过命令自动下滑,然后视频下面的评论区很快都会加载出来,而加载出来的数据包通过精易vip模块的数据截取命令截取,然后把数据提取到指定的变量里面,然后通过JSON命令解析采集出来的评论用户ID、关键词、时间等信息,......
  • 未预编译文件“/default.aspx”,因此不能请求该文件
    未预编译文件“/default.aspx”,因此不能请求该文件。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Web.HttpException:未预编译文件“/default.aspx”,因此不能请求该文件。 ......
  • OpenFeign远程调用
    Feign是什么SpringCloud组件中一个轻量级RESTful的HTTP服务客户端,它是在RestTemplate基础上做封装(Feign内置Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务)一种声明式、模板化的HTTP客户端。使用Feign,可以做到声明式调用。Feign是在RestTemplate和Ribbon......
  • http请求问题
    在建立http请求的时候,一定要注意请求格式:publicstaticJSONObjecthttpRequest(StringrequestUrl,StringrequestMethod,StringoutputStr){JSONObjectjsonObject=null;StringBufferbuffer=newStringBuffer();try{URLurl=newURL(requestUrl);......
  • 服务器未正确处理预检请求,解决办法
    这个错误提示表明浏览器已经阻止了跨域请求,因为服务器未正确处理预检请求。预检请求是浏览器在发送跨域请求之前,先向服务器发送一个OPTIONS请求,以确定服务器是否接受跨域请求,并确定可以使用哪些HTTP方法和请求头。为了解决这个问题,您需要在服务器端添加处理预检请求的代码。......
  • JdbcTemplate中如何进行存储过程调用
    JdbcTemplate调用存储过程的主要有三种方发(精)一、jdbcTemplate.call()定义如下:Map<String,Object>call(CallableStatementCreatorcsc,List<SqlParameter>declaredParameters)throwsDataAccessException;第一个参数是创建调用存储过程的方法的参数,第二个参数是返回结果的Map......
  • C++调用Python3实战,和PyImport_ImportModule返回NULL问题解决
    LinuxC++调用Python3入门准备以下面的目录结构演示如何在LinuxC/C++调用python3。|--hello.py|--main.cpp|--CMakeLists.txt hello.py:python的脚本,里面有2个函数main.cpp:c++函数CMakeLists.txt:Cmake文件,生成makefilepython脚本示例python脚本hello.py内容如下,......