【Vue+Django】Training Management Platform Axios并发请求 - 20230703

news2025/1/2 3:06:26

需求陈述

由于API是特定单位/特定类别/特定教学方式的数据,故汇总数据需要循环请求不同单位/不同类别/不同教学方式。

技术要点

1.axios并发请求
2.JS for循环
3.Vue数组中出现 ob :Observer无法取值问题的解决方法
4.将数据转化为数组
5.一次请求所有数据后,再分页

1.axios并发请求

关键点1:myDLTMultiData()方法来循环请求 SearchData()。
关键点2:axios.all([Array_A])中的Array_A是请求的列表。

    //Array_A来保存【请求的队列】
    SearchData(myDate_start,myDate_end,myuserId,trainingMethodId,pageNum,skillcode){
      axios({
          timeout:3000,
          method:"post",
          url:"https://dltapi.wis***.com/dlt/org/trainingrecord/search",
          data:{
            startDate: myDate_start ||'2012-01-01',
            endDate: myDate_end ||'2050-06-01',
            trainingMethodId: trainingMethodId || 1,
            currentPage: pageNum || 1,
            userId:myuserId,
            // courseCode: "K01002003CM",
            // courseName:'EC/batch/try run流程(课程)',
            orgSkillCode:skillcode || "SPK011",
            pageSize: 1000000,
          },
          headers:{
            'Content-Type': 'application/json',
            'Authorization': sessionStorage.getItem('UserPermission'),
          },
        }).then(
          (response) => {
            // console.log('response',response)
            //拼数组
            for (let j = 0; j < response.data.trainingRecords.length; j++) {
              this.DLT_data.push(response.data.trainingRecords[j])
            }
            // return response.data.trainingRecords
          }
        ).catch(
          function (err) {
              // 请求失败处理
              console.log('请求失败!',err)
              // alert('请求失败!',err)
          })
    },

    myDLTMultiData(myDate_start,myDate_end,myuserId){
      this.DLT_data = []
      let Array_A = []
      let skillcodeRange = ["SPK001","SPK002","SPK003","SPK004","SPK005","SPK006","SPK007","SPK008","SPK009","SPK010",
      "SPK011","SPK012","SPK013","SPK014","SPK015","SPK016","SPK017","SPK018","SPK019","SPK020","SPK021","SPK022",
      "SPK024","SPK025","SPK026","SPK027","SPK028","SPK029","SPK030","SPK031","SPK032","SPK033","SPK034",
      "SPK035","SPK036","SPK037","SPK038","SPK039","SPK040","SPK04","SPK042","SPK043"]
      // let skillcodeRange = ["SPK036","SPK037","SPK038","SPK039","SPK040","SPK041","SPK042","SPK043"]

      
      //循环
      for (let s = 0; s < skillcodeRange.length; s++) {
        for (let m = 1; m < 3; m++) {
          // 页码需从1开始,100000笔,搜索一次就好
          for (let i = 1; i < 2; i++) {
              Array_A.push(this.SearchData(myDate_start,myDate_end,myuserId,m,i,skillcodeRange[s]))
            }
          }
      }

      setTimeout((Array_A)=>{
            axios.all([
              Array_A
          ]).then((response)=>{

              //Vue数组中出现__ob__:Observer无法取值问题的解决方法,把值转为DLT_data_all
              this.DLT_data_all = JSON.parse(JSON.stringify(this.DLT_data))
              // console.log('DLT_data',JSON.parse(JSON.stringify(this.DLT_data)))
              console.log('DLT_data_all',this.DLT_data_all)

          }).catch(e=>{ // 失败的时候则返回最先被reject失败状态的值
              console.log("error",e)
          })

        },3000)

    },

2.JS for循环

将请求循环push到Array_A

      //循环
      for (let s = 0; s < skillcodeRange.length; s++) {
        for (let m = 1; m < 3; m++) {
          // 页码需从1开始,100000笔,搜索一次就好
          for (let i = 1; i < 2; i++) {
              Array_A.push(this.SearchData(myDate_start,myDate_end,myuserId,m,i,skillcodeRange[s]))
            }
          }
      }

3.Vue数组中出现 ob :Observer无法取值问题的解决方法

https://blog.csdn.net/wanshuai12138/article/details/124809122
setTimeout()方法去除Observer

vue 怎么拿到{ ob: Observer}里面的值?https://blog.csdn.net/weixin_49522520/article/details/125522547

      setTimeout((Array_A)=>{
            axios.all([
              Array_A
          ]).then((response)=>{
              //Vue数组中出现__ob__:Observer无法取值问题的解决方法,把值转为DLT_data_all
              this.DLT_data_all = JSON.parse(JSON.stringify(this.DLT_data))
          }).catch(e=>{ // 失败的时候则返回最先被reject失败状态的值
              console.log("error",e)
          })
        },3000)

4.将数据转化为数组

将每次并发请求的数据重组为数组,保存在DLT_data里面。

//拼数组
for (let j = 0; j < response.data.trainingRecords.length; j++) {
     this.DLT_data.push(response.data.trainingRecords[j])
}

5.一次请求所有数据后,再分页

DLT_data_all来保存所有数据,pageNum来做切片。

  computed: {
    DLT_data_filter(){
      //return this.DLT_data_all.slice(0,10)
      if(this.pageNum==1){
        return this.DLT_data_all.slice(0,10)
      }
      else{
        return this.DLT_data_all.slice((this.pageNum-1)*10,this.pageNum*10)
      }
    }
  },

  methods: {
    handlenextClickDLT(val) {
      //把回调参数val给pageNum
      console.log("当前页码:", val);
      this.pageNum = val
    },
   }

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

交安三类人员专职安全生产管理人员(c证)考试题库及答案(主观题)

本题库是根据最新考试大纲要求&#xff0c;结合近年来考试真题的重难点进行汇编整理组成的全真模拟试题&#xff0c;考生们可以进行专项训练&#xff0c;查漏补缺巩固知识点。本题库对热点考题和重难点题目都进行了仔细的整理和编辑&#xff0c;相信考生在经过了针对性的刷题练…

计算机由于找不到d3dx9_35.dll,无法启动软件游戏的三个修复方法

在打开游戏的时候&#xff0c;计算机提示由于找不到d3dx9_35.dll&#xff0c;无法正常启动运行。这个是为什么呢&#xff1f;d3dx9_35.dll是DirectX 9.0里面的一个动态连结库文件&#xff0c;它包含了Direct3D、DirectPlay几个组件的二进制文件&#xff0c;为软件提供了多媒体图…

Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED

Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED Cisco Catalyst 8000 边缘平台系列 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-8000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【Matlab】智能优化算法_多元宇宙优化算法MVO

【Matlab】智能优化算法_多元宇宙优化算法MVO 1.背景介绍2.数学模型3.文件结构4.详细代码及注释4.1 func_plot.m4.2 Get_Functions_details.m4.3 initialization.m4.4 main.m4.5 MVO.m4.6 RouletteWheelSelection.m 5.运行结果6.参考文献 1.背景介绍 大爆炸理论讨论了我们的宇宙…

基于CentOS7安装配置docker与docker-compose

Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应用等等&#xff09…

解决方案︱视频孪生智慧场馆解决方案

一、方案概述 视频孪生场馆综合管理系统&#xff0c;是综合数字孪生、三维地理信息、视频监控等技术于一体的创新性综合管理平台。 平台基于三维地理&#xff08;3D GIS&#xff09;引擎&#xff0c;综合运用了人工智能、大数据、三维GIS、遥感、计算机图形学等新一代空间信息…

【PCL】(四)点云可视化

文章目录 可视化CloudViewer 可视化PCLVisualizer 可视化可视化单个云添加一些颜色RGB点云指定颜色 法线和其他信息绘制形状多个窗口交互自定义 可视化 CloudViewer 可视化 将【PCL】&#xff08;一&#xff09;PCL基本数据结构PointCloud与原生文件格式PCD末尾的数据保存到m…

blender 之点云渲染(论文渲图)

blender 之点云渲染&#xff08;论文渲图&#xff09; 一、导入点云1.新建2.导入点云3.位置移动&放大缩小 二、Geometry Nodes实体化点云1.新建节点2.实体化 三、给实体化点云添加材质四、设置渲染引擎更换为Cycles。 五、对准视角1.新建一个球2.创建相机视角跟踪3.将uv球挪…

阿里巴巴java开发手册

前言 以下内容整理来自阿里巴巴java开发手册&#xff0c;方便在线查看。 一、编程规约 1.1 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始&#xff0c;也不能以下划线或美元符号结束。 反例&#xff1a;_name / __name / O b j e c t / n a m e / n a m e O…

【论文阅读笔记】Analyzing Federated Learning through an Adversarial Lens

个人阅读笔记&#xff0c;如有错误欢迎指出 ICML 2019 [1811.12470] Analyzing Federated Learning through an Adversarial Lens (arxiv.org) 问题&#xff1a; 传统模型攻击容易被服务器通过精度检测以及权重分析检测出来&#xff0c;本文意在找到一种投毒方法绕过服…

Yolov8优化:最新移动端高效网络架构 CloFormer: 注意力机制与卷积的完美融合 | 清华团队2023 即插即用系列

💡💡💡本文属于原创独家改进:引入CloFormer 中的 AttnConv,上下文感知权重使得模型能够更好地适应输入内容。相比于局部自注意力机制,引入共享权重使得模型能够更好地处理高频信息,从而提高性能。 注意力机制与卷积的完美融合 AttnConv | 亲测在多个数据集能够实现…

React 编译之后修改服务地址

编写react 的项目中&#xff0c;我们要调用后台服务的地址&#xff0c;当前后台服务器的地址在是写Axios相关的js文件中&#xff0c; 但是项目我们在yarn build之后&#xff0c;变成了这样&#xff1a; 我们根本没有办法修改相关冯server_address,这样就产生了很大的局限性&…

24JS15——DOM

文章目录 一、DOM简介1、什么是DOM2、DOM树 二、获取元素1、如何获取页面元素2、根据id获取3、根据标签名获取4、通过HTML5新增的方法获取5、获取特殊元素body html 三、事件基础1、事件概述2、事件三要素3、执行事件的步骤 四、操作元素1、改变元素内容2、常用元素的属性操作3…

2017计算机学科夏令营上机考试

目录 A:判决素数个数【水题】 B:编码字符串(string)【水题】 C:岛屿周长(matrix)【深搜或者找规律】 D:Safecracker【深搜或者暴力不水】 E:怪盗基德的滑翔翼【动态规划】 F:Full Tank?【图论最短路/BFS优先队列】 G:实现堆结构 H:Subway&#xff08;迪杰斯特拉算法&a…

理解ASEMI代理海矽美快恢复二极管SFP3012A的性能与应用

编辑-Z 在电子元件领域&#xff0c;快恢复二极管SFP3012A是一种重要的半导体器件&#xff0c;它在电路设计中扮演着至关重要的角色。本文将深入探讨SFP3012A的性能特点和应用领域&#xff0c;帮助读者更好地理解和使用这种二极管。 一、SFP3012A的性能特点 快恢复二极管SFP301…

4个在Pandas DataFrame中进行元素比较的函数

大家好&#xff0c;Pandas DataFrame是具有标记行和列的二维数据结构。 有时我们需要对两个DataFrame进行逐个元素的比较。例如&#xff1a; 使用另一个DataFrame的值来更新其中的值。 比较数值&#xff0c;并选择较大或较小的值。 本文将介绍四个不同的Pandas函数&#xf…

阿里前端常考vue面试题汇总

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 Vuex中actions和mutations有什么区别 题目分析 mutations和actions是vuex带来的两个独特…

MySQL原理探索——22 MySQL有哪些“饮鸩止渴”提高性能的方法

不知道你在实际运维过程中有没有碰到这样的情景&#xff1a;业务高峰期&#xff0c;生产环境的 MySQL 压力太大&#xff0c;没法正常响应&#xff0c;需要短期内、临时性地提升一些性能。 我做项目的时候&#xff0c;就偶尔会碰上这种场景。用户的开发负责人说&#xff0c;不管…

使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

前段时间Cocos2d-x更新了一个Cocos引擎&#xff0c;这是一个集合源码&#xff0c;IDE&#xff0c;Studio这一家老小的整合包&#xff0c;我们可以使用这个Cocos引擎来创建我们的项目。 在Cocos2d-x被整合到Cocos引擎之前&#xff0c;我们可以不那么方便地在我们创建的工程里调…

SpringBoot 实现合并表头导出数据 - EasyExcel应用

文章目录 1. 构建实体类2. 导出3. 导入 EasyExcel是一款开源的Java处理Excel文件的工具库&#xff0c;它提供了简单易用的API&#xff0c;可以方便地读取、写入和操作Excel文件。下面是一些常见的EasyExcel应用场景&#xff1a; 读取Excel文件&#xff1a;使用EasyExcel可以轻…