细谈Axios中那些不为人知的秘密!一文读懂Axios(二)

简介: 细谈Axios中那些不为人知的秘密!一文读懂Axios

6、并发请求

并发请求,就是同时进行多个请求,并统一处理返回值。类似promise.all。

在下面例子中,我们使用axios.all,对data.json/city.json同时进行请求,使用axios.spread,对返回的结果分别进行处理。代码如下:

// 并发请求
axios.all([axios.get("/data.json"), axios.get("/city.json")]).then(
   axios.spread((dataRes, cityRes) => { 
        console.log(dataRes, cityRes);
   })
);

注意:axios.all的参数是请求函数的数组,在对应的回调then中,调用axios.spead对返回值进行处理,即可。

并发请求的应用场景:需要同时进行多个请求,并且需要同时处理接口调用的返回值的时候,我们可以使用并发请求。

Axio实例

1、axios实例的创建

比如:后端接口地址有多个(www.test.com、www.example.com),并且超时时长不同(1000ms、2000ms),这个时候,我们可以创建实例。

思路如下:创建多个实例,配置不同的超时时长,用不同的实例去请求不同的接口。使用axios.acreate来创建实例,配置相关信息,进行网络请求。代码如下:

// 实例1
let instance = axios.create({ 
  baseURL:'http://loacalhost:8080',
  timeout:1000
})
instance.get('/data.json').then(res=>{ 
  console.log(res)
})
//实例2
let instance2 = axios.create({ 
  baseURL: "http://loacalhost:8081",
  timeout: 2000
});
instance2.get("/city.json").then(res => { 
  console.log(res);
});

备注:此时我们就可以访问http://loacalhost:8080与http://loacalhost:8081两个不同域名的接口,并且使用不同的配置。

2、axios实例的相关配置

(1)配置列表

baseURL:请求的域名(基本地址)。

timeout:请求的超时时长,超出后后端返回401。


备注:一般由后端定义,后端的接口需要的处理时长较长的时候,如果请求的时间过长,后端处理不过来,就会阻塞,给服务器造成较大的压力。设置后,可以及时释放掉。


url:请求路径。

method:请求方法。如:get、post、put、patch、delete等。

headers:请求头。

params:将请求参数拼接到url上

data:将请求参数放置到请求体里  

axios.create({
    baseURL:'', //请求的域名(基本地址)
    timeout:2000, //请求的超时时长,单位毫秒,默认。
    url:'/data.json', //请求路径
    method:'get', //请求方法
    headers:{ 
        token:''
    }, //设置请求头
    params:{ 
    },//将请求参数拼接到url上
    data:{ 
    }, //将请求参数放置到请求体里
});

(2)三种配置方式

  • axios全局配置
1. axios.defaults.baseURL = ‘http://localhost:8080‘
2. 
3. axios.defaults.timeout = 2000
  • axios实例配置
1. let instance = axios.create();
2. 
3. instance.defaults.timeout = 3000
  • axios请求配置
1. instance.get(‘/data.json’,{
2. 
3. timeout:5000
4. })

优先级:axios全局配置 < axios实例配置 < axios请求配置

3、常用参数配置的使用方法

举例1:

let instance1 = axios.create({ 
        baseURL:'http://localhost:9090',
        timeout:1000
    })
    instance1.get("/contactList",{ 
        params:{ 
            id:10
        }
    }).then(res=>{ 
        console.log(res)
    })

分析:配置的参数为baseURL:‘http://localhost:9090’,timeout:1000,method:‘get’,params:\{ id:10},url:’/contactList’

举例2:

let instance2 = axios.create({ 
        baseURL:'http://localhost:9091',
        timeout:3000
    })
    instance2.get("/contactList",{ 
        timeout:5000
    }).then(res=>{ 
        console.log(res)
    })


分析:配置的参数为baseURL:‘http://localhost:9091’,timeout:5000,method:‘get’,url:’/contactList’

注意:最终的有效配置是由优先级高的覆盖优先级低的

相关文章
|
JSON JavaScript 数据格式
细谈Axios中那些不为人知的秘密!一文读懂Axios(四)
细谈Axios中那些不为人知的秘密!一文读懂Axios
157 0
|
2月前
|
资源调度 JavaScript
|
4月前
|
JavaScript 前端开发
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
这篇文章主要讨论了axios的使用、原理以及源码分析。 文章中首先回顾了axios的基本用法,包括发送请求、请求拦截器和响应拦截器的使用,以及如何取消请求。接着,作者实现了一个简易版的axios,包括构造函数、请求方法、拦截器的实现等。最后,文章对axios的源码进行了分析,包括目录结构、核心文件axios.js的内容,以及axios实例化过程中的配置合并、拦截器的使用等。
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
|
2月前
|
缓存 JavaScript 搜索推荐
|
4月前
|
JavaScript 前端开发
【Vue面试题二十七】、你了解axios的原理吗?有看过它的源码吗?
文章讨论了Vue项目目录结构的设计原则和实践,强调了项目结构清晰的重要性,提出了包括语义一致性、单一入口/出口、就近原则、公共文件的绝对路径引用等原则,并展示了单页面和多页面Vue项目的目录结构示例。
|
3月前
|
JavaScript 前端开发 开发者
vue中使用axios请求post接口,请求会发送两次
vue中使用axios请求post接口,请求会发送两次
|
2月前
|
前端开发 JavaScript 安全
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
141 4
|
3月前
|
JavaScript
vue 中 axios 的安装及使用
本文介绍了在Vue项目中安装和使用axios的方法。首先通过命令`npm install axios --save-dev`安装axios,然后在组件的`created`生命周期钩子中使用`axios.get`异步获取数据,并将获取的数据更新到组件的`data`中。文中提供了完整的示例代码,包括安装命令、验证安装成功的步骤、Vue组件的模板、脚本和样式。
vue 中 axios 的安装及使用
|
3月前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
46 4