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 相关文章推荐
jQuery在html有效在jsp无效的原因及解决方法
Aug 02 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
Apr 03 Javascript
Vue+Vux项目实践完整代码
Nov 30 Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 Javascript
jquery中为什么能用$操作
Jun 18 jQuery
深入理解redux之compose的具体应用
Jan 12 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP中的Memcache详解
2014/04/05 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
Javascript 对象的解释
2008/11/24 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
javascript 函数使用说明
2010/04/07 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
JS delegate与live浅析
2013/12/21 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
python开发游戏的前期准备
2019/05/05 Python
解析python的局部变量和全局变量
2019/08/15 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
酒店副总经理岗位职责范本
2014/02/04 职场文书
党员民主评议个人总结
2014/10/20 职场文书
canvas 中如何实现物体的框选
2022/08/05 Javascript