axios解决高并发的方法:axios.all()与axios.spread()的操作


Posted in Javascript onNovember 09, 2020

前言:

很多时候,我们可能需要同时调用多个后台接口,就会高并发的问题,一般解决这个问题方法:

axios.all和axios.spread

***注意这里的$get是封装的axios方法
//方法一:
searchTopic() {
 return this.$axios({
       url:'地址1',
       method:'方式',//get/post/patch/put/deleted
       params:{//参数get所以用params。post.put用data
       }
      })
}
 //方法二:
searchs(){
     return this.$axios({
       url:'地址1',
       method:'方式',//get/post/patch/put/deleted
       params:{//参数get所以用params。post.put用data
       }
      })
     },
 
axios.all([searchTopic(), searchs()])
 .then(axios.spread(function (allSearchTopic, allSearchs) {
  debugger//打印可以拿到所有的返回值
  allSearchTopic == 方法一的返回值
  allSearchs == 方法二的返回值
 }));

补充知识:axios.all及Promise.all合并多个请求且都返回数据后进行其他操作

很多时候,我们需要同时向后端进行多个请求,当所有请求都返回数据后,再进行一些操作。

比如:初始化页面时,可能需要初始化一些基础数据,才能进行操作。

获取这些基础数据,可能需要向后端发送request1,request2。。。

等多个请求,而后续的操作说需要request1,request2等都正确返回数据后才能进行。

在axios官方文档中对一次性并发多个请求示例如下:

function getUserAccount(){
 return axios.get('/user/12345');
}
function getUserPermissions(){
 return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(),getUserPermissions()])
 .then(axios.spread(function(acct,perms){
  //当这两个请求都完成的时候会触发这个函数,两个参数分别代表返回的结果
 }))

但是很多时候,我们在项目中并不会直接去axios.get,axios请求可能都放在一个文件中,并且对加了拦截器等等。示例如下:

export const cargoDayNumber = (data) => {
 return axios.request({
  url: '/api/zz-xt/statistical/areas',
  method: 'post',
  data: data
 })
}

在vue文件中的使用如下:

let r1 = carVisitTime({ createTime: '2019-06-27' })
   let r2 = statistic({ createTime: '2019-06-27' })
   let r3 = cargoDayNumber({ createTime: '2019-07-01' })
   let r4 = enterpriseRanking()
   axios.all([r1, r2, r3, r4]).then(
    axios.spread((r1, r2, r3, r4) => {
     
     this.numberVehicleVisits = r1.data      
     this.loadingDateRank.loading = r2.data.loading
     this.loadingDateRank.unloading = r2.data.unloading 
     
     this.loadingAreasRank.loadingRegionalList = r3.data.inflow
     this.loadingAreasRank.unloadingRegionalList = r3.data.outflow 
   
     this.enterpriseLoadWeight.enterpriseLoadingRankList = r4.data.loadingRank
     this.enterpriseLoadWeight.enterpriseUnloadingRankList = r4.data.unloadingRank
    })
   )

除了axios.all,我们也可以使用Promise.all,示例如下

Promise.all([p1, p2]).then(function(values) {
    console.log(values);//values为一个数组
    ///进行你的下一步操作
   });

以上这篇axios解决高并发的方法:axios.all()与axios.spread()的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
前端开发必须知道的JS之原型和继承
Jul 06 Javascript
JS 自定义带默认值的函数
Jul 21 Javascript
在JavaScript中typeof的用途介绍
Apr 11 Javascript
JavaScript的arguments对象应用示例
Sep 15 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
Jun 20 Javascript
微信小程序  生命周期详解
Oct 27 Javascript
vue 组件的封装之基于axios的ajax请求方法
Aug 11 Javascript
JS实现的对象去重功能示例
Jun 04 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
Nov 09 #Javascript
详解Vue中的watch和computed
Nov 09 #Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 #Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
Nov 09 #Javascript
Echarts在Taro微信小程序开发中的踩坑记录
Nov 09 #Javascript
Vue路由权限控制解析
Nov 09 #Javascript
在vue项目中promise解决回调地狱和并发请求的问题
Nov 09 #Javascript
You might like
第三节--定义一个类
2006/11/16 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
使用PDB简单调试Python程序简明指南
2015/04/25 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
python字符串与url编码的转换实例
2018/05/10 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Python类及获取对象属性方法解析
2020/06/15 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
python飞机大战游戏实例讲解
2020/12/04 Python
python 解决函数返回return的问题
2020/12/05 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
小学生家长评语集锦
2014/01/30 职场文书
房产公证书范本
2014/04/10 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
三方协议书
2015/01/27 职场文书
2016春季运动会前导词
2015/11/25 职场文书
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers