【异步技术】Axios并发请求 2021-07-14

axios并发请求与参数配置

axios并发请求

axios的并发请求其实并不是某一精确的时间段发送出两条异步消息而是在两条消息的状态完成之后能够执行同一个回调函数

手动实现并发请求

并发请求其实就是多次请求 而且能够在同时间处理同状态的两个请求

// 设置一个空对象 承载两次请求的结果
let endResult= {}
//  第一次请求发起
axios.get(url).then(result=>{
        // 此时在第一次请求的回调中 不处理数据
        endResult.firstResult= result
        alert("第一次请求完成")
        // 发起第二次请求
        return axios.get(url).then(result=>{
            // 在第二次请求的回调中处理两次请求的数据
            endResult.secondResult= result
            console.log(endResult)
        })
    })
/* 服务端 */

/*
 *  模拟服务端 接受客户端请求然后相应
 */
// 导入express模块
let express = require('express');
let static= require('static')
let cors= require('cors');
// 初始化express模块 得到服务端对象
let app = express();
app.use(cors());

let count = 0
// 监听 ‘根url’
app.get('/',(req,res,err)=>{
    // 每次访问count++ 帮助客户端 确认访问的次数
    count++
    res.end('您是第'+count+'次访问');
});
// 开启服务监听请求
app.listen(80,'127.0.0.1',()=>{
    console.log('服务器开启成功');
});

结果:


axios的并发请求处理

axios的处理并发请求用到了all方法,把所有的请求返回的promise存储在数组中,用all方法来处理回调函数,但是只有所有的请求全部成功才会执行all方法下的回调

客户端同上:

// 客户端
let url= 'http://127.0.0.1/';
    let sendArr=[
        axios.get(url),
        axios.get(url),
        axios.get(url)
    ];
    axios.all(sendArr).then(result=>{
        console.log(result);
    })

结果:



并且还可使用axios.speard方法

使用axios.speard修改上述代码

let url= 'http://127.0.0.1/';
    let sendArr=[
        axios.get(url),
        axios.get(url),
        axios.get(url)
    ];
    axios.all(sendArr).then(axios.spread((firstParm,secondParm,thirdParm)=>{
        console.log(firstParm);
        console.log(secondParm);
        console.log(thirdParm);
    }))

结果:



对比直接处理返回数组的方法,可以精确的确认的每一次请求的返回参数,不需要在进行数组操做,而且参数的顺序跟请求的顺序一致

axios并发请求个别出错

let url= 'http://127.0.0.1/';
let sendArr=[
    axios.get(url+'1'),
    axios.get(url),
    axios.get(url)
];
axios.all(sendArr).then(axios.spread((firstParm,secondParm,thirdParm)=>{
    console.log(firstParm);
    console.log(secondParm);
    console.log(thirdParm);
}))

在这里我仔细思考之后发现,并发请求之后统一处理如果有一个请求错误了,那么是不是确实需要全盘推倒呢?

其实是可以在处理返回数据时,自己来完成某个请求错误之后的解决方案

改进代码继续分析

let url= 'http://127.0.0.1/';
    let sendArr=[
        axios.get(url+'1').catch((err)=>{
            if(err.response){
                console.log(err.response.status);
                console.log(err.response.headers);
            }else if(err.request){
                console.log(err.request)
            }else{
                console.log(err.message)
            }
        }),
        axios.get(url),
        axios.get(url)
    ];
    axios.all(sendArr).then(axios.spread((firstParm,secondParm,thirdParm)=>{
        console.log(firstParm);
        console.log(secondParm);
        console.log(thirdParm);
    }))

结果:



结果加了catch之后,发现spread是可以完成这种需求的

那么改成then的统一处理 再看一下



同样也是可以的,但是必须要使用catch来处理错误

并且如果不加catch处理的话,其他的请求是可以成功发送的 但是再回调中无法处理返回数据,所以一旦某一个请求出现了错误,可能带来意想不到的结果
————————————————
版权声明:本文为CSDN博主「Mahometan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44111750/article/details/108519064

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容