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代码必备[js多浏览器兼容写法]
Oct 29 Javascript
js 小贴士一星期合集
Apr 07 Javascript
一些常用的JavaScript函数(json)附详细说明
May 25 Javascript
浅谈jQuery中的事件
Mar 23 Javascript
javascript中this的四种用法
May 11 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
Dec 08 Javascript
React组件中的this的具体使用
Feb 28 Javascript
vue中rem的配置的方法示例
Aug 30 Javascript
vue数据初始化initState的实例详解
Apr 11 Javascript
vue如何获取自定义元素属性参数值的方法
May 14 Javascript
H5实现手机拍照和选择上传功能
Dec 18 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 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
Prototype Hash对象 学习
2009/07/19 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
Python写的Socks5协议代理服务器
2014/08/06 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
Python快速从注释生成文档的方法
2016/12/26 Python
基于python实现名片管理系统
2018/11/30 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
淘宝店铺营销方案
2014/02/13 职场文书
爱情寄语大全
2014/04/09 职场文书
高中学生自我评价范文
2014/09/23 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
小爸爸观后感
2015/06/15 职场文书
Python实现简繁体转换
2021/06/07 Python