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.tmpl JQuery模板插件
Oct 10 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
Dec 01 Javascript
总结jQuery插件开发中的一些要点
May 16 Javascript
走进AngularJs之过滤器(filter)详解
Feb 17 Javascript
canvas绘制环形进度条
Feb 23 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
记录vue项目中遇到的一点小问题
May 14 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
Nov 16 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 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/04/24 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Python urlopen 使用小示例
2008/09/06 Python
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
物业经理求职自我评价
2013/09/22 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
幼儿园小班评语
2014/04/18 职场文书
保护环境倡议书300字
2014/05/19 职场文书
政治学求职信
2014/06/03 职场文书
学校社会实践活动总结
2014/07/03 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
财政局个人年终总结
2015/03/03 职场文书
硕士学位申请报告
2015/05/15 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript