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 相关文章推荐
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
javascript类型转换示例
Apr 29 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
May 26 Javascript
jquery获取url参数及url加参数的方法
Oct 26 Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 Javascript
第八篇Bootstrap下拉菜单实例代码
Jun 21 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
使用apifm-wxapi模块中的问题及解决方法
Aug 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
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
js切换光标示例代码
2013/10/10 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
python数字类型math库原理解析
2020/03/02 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
素质拓展感言
2014/01/29 职场文书
机关出纳岗位职责
2014/04/03 职场文书
教师工作决心书
2015/02/04 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
详解Python为什么不用设计模式
2021/06/24 Python