• 技术文章 >web前端 >js教程

    深析axios异步请求的流程与原理

    藏色散人藏色散人2022-08-09 15:30:46转载88

    一、什么是axios?

    axios是一个基于Promise的方法,可以发送get、post等请求,并且前后端都可以使用。【推荐:Ajax视频教程web前端

    二、axios的内部原理

    三、axios的使用

    1、通过使用axios的方法

    常用方法:get, post, request

    axios.get

    axios.get('/user', {
        params: {
          ID: 12345
        }
      })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      })
      .then(function () {
        // always executed
      });

    axios.post

    axios.post('/user', {
        firstName: 'Fred',
        lastName: 'Flintstone'
      })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });

    axios.request

    可以传入很多请求配置

    axios.request({
    	url: '/user',
    	method: 'get', // 默认
    	baseURL: '/api',
    	//...})

    2、通过传入配置方法

    axios({
      method: 'get',
      url: 'http://bit.ly/2mTM3nY',
      responseType: 'stream'})
      .then(function (response) {
        response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
      });

    四、响应模块

    响应模块有以下几个参数

    {
    	data: {},
    	status: 200,
    	statusText: 'ok',
    	header: {},
    	config: {},
    	request: {}}

    五、配置

    1.全局axios的配置

    axios.defaults.baseURL = 'https://api.example.com';
    axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
    axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

    2.实例的配置

    const instance = axios.create({
      baseURL: 'https://api.example.com'});
     instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

    3.配置的优先级

    const instance = axios.create();instance.defaults.timeout = 2500;instance.get('/longRequest', {
      timeout: 5000});

    最终timeout设置的时间是5000,所以这里面的优先级,请求里面的配置>实例化配置>axios的默认配置

    六、Interceptors 拦截器

    可以在请求数据之前或者接收数据之前处理数据

    axios.interceptors.request.use(function (config) {
        return config;
      }, function (error) {
        return Promise.reject(error);
      });
      axios.interceptors.response.use(function (response) {
        return response;
      }, function (error) {
        return Promise.reject(error);
      });

    七、并发请求处理

    // 把axios请求放进函数里function getUserAccount() {
      return axios.get('/user/12345');}
     function getUserPermissions() {
      return axios.get('/user/12345/permissions');}//函数执行放到Promise里面排队,挨个响应。Promise.all([getUserAccount(), getUserPermissions()])
      .then(function (results) {
        const acct = results[0];
        const perm = results[1];
      });

    参考文档:https://www.npmjs.com/package/axios

    以上就是深析axios异步请求的流程与原理的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:axios原理
    上一篇:聊聊如何使用package.json对依赖包进行版本管理 下一篇:restful接口规范与postman调试工具介绍
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• axios实现跨域分别是哪三种方法• vue+axios+php如何实现上传文件功能?• 详解uniapp项目中如何引入axios• vue怎样解决axios请求出现前端跨域问题(实例详解)
    1/1

    PHP中文网