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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
JavaScript 图片预览效果 推荐
Dec 22 Javascript
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
js命名空间写法示例
Dec 18 Javascript
JS简单实现数组去重的方法示例
Mar 27 Javascript
ztree实现权限横向显示功能
May 20 Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
keep-alive不能缓存多层级路由菜单问题解决
Mar 10 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 和 HTML
2006/10/09 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
js或css实现滚动广告的几种方案
2010/01/28 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
python中list循环语句用法实例
2014/11/10 Python
Python探索之创建二叉树
2017/10/25 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
《木笛》教学反思
2014/03/01 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
element tree树形组件回显数据问题解决
2022/08/14 Javascript