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 相关文章推荐
JavaScript 函数调用规则
Sep 14 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
Jun 30 Javascript
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
Nov 10 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
javascript学习小结之prototype
Dec 03 Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 Javascript
获取IE浏览器Cookie信息的方法
Jan 23 Javascript
Javascript中click与blur事件的顺序详析
Apr 25 Javascript
js实现动态时钟
Mar 12 Javascript
微信小程序仿通讯录功能
Apr 09 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 header()函数使用说明
2008/07/10 PHP
php二分查找二种实现示例
2014/03/12 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
PDO::exec讲解
2019/01/28 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
JavaScript实现区块链
2018/03/14 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
Python同时迭代多个序列的方法
2020/07/28 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
文员个人求职自荐信
2013/09/21 职场文书
请假条怎么写
2014/04/10 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
幼师自荐信范文
2015/03/06 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
海洋天堂观后感
2015/06/05 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python