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 相关文章推荐
HTML5附件拖拽上传drop & google.gears实现代码
Apr 28 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
May 21 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
Nov 17 Javascript
JavaScript获取各大浏览器信息图示
Nov 20 Javascript
基于jquery实现百度新闻导航菜单滑动动画
Mar 15 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 Javascript
js的Object.assign用法示例分析
Mar 05 Javascript
Vue3 响应式侦听与计算的实现
Nov 11 Javascript
利用promise及参数解构封装ajax请求的方法
Mar 24 Javascript
vue特效之翻牌动画
Apr 20 Vue.js
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
SONY ICF-F10中波修复记
2021/03/02 无线电
删除数组元素实用的PHP数组函数
2008/08/18 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
python数组过滤实现方法
2015/07/27 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Python最小二乘法矩阵
2019/01/02 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Python try except finally资源回收的实现
2021/01/25 Python
python中os.remove()用法及注意事项
2021/01/31 Python
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
儿童生日会策划方案
2014/05/15 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
介绍信的写法
2015/01/31 职场文书
考试没考好检讨书
2015/05/06 职场文书
高中家长意见怎么写
2015/06/03 职场文书
JavaScript函数柯里化
2021/11/07 Javascript
部分武汉产收音机展览
2022/04/07 无线电