iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >axios异步请求的流程与原理是什么
  • 653
分享到

axios异步请求的流程与原理是什么

2024-04-02 19:04:59 653人浏览 独家记忆
摘要

这篇文章主要介绍了axiOS异步请求的流程与原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇axios异步请求的流程与原理是什么文章都会有所收获,下面我们一起来看看吧。

这篇文章主要介绍了axiOS异步请求的流程与原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇axios异步请求的流程与原理是什么文章都会有所收获,下面我们一起来看看吧。

一、什么是axios?

axios是一个基于Promise的方法,可以发送get、post等请求,并且前后端都可以使用。

二、axios的内部原理

  • axios库对外暴露了一个axios实例,axios实例其中挂载了一个Axios方法,Axios方法有一个interceptors对象(拦截器),interceptors对象request对象response对象,并且request对象response对象都有use方法,所以,我们可以调用axios.interceptors.request.use()和axios.interceptors.response.use().

  • interceptors对象里面的request对象response对象其实是一个用来管理拦截器的数组(handlers)。当我们调用axios.interceptors.request.use(),就会在request的拦截器数组(handlers)里面push一个成功回调和一个失败回调。每使用一次,就push一次,类似[res1,rej1,res2, rej2…]

  • 接下来是一个chain,它是一个存储所有回调的数组因为它是给Promise使用的,所以它需要使用两个值,初始值为dispatchRequest和undefiend。接着,Promise.resolve(config).then(fn1, fn2)。当config里面的结果为fulfilled(成功),就把config里的配置传给fn1并执行。如果为reject(报错),就把错误结果传给fn2并执行.即Promise.resolve(config).then(chain[0], chain[1])。chain[0]为成功回调,chain[1]为失败回调。config里面有很多配置项,他们可能是一个string值或方法等。

  • 接下来是整理所有的Promise,把request数组里的回调函数unshift到chain数组的最前面,把response数组里的回调函数push到chain数组的最后面。最终chain数组里面类似[res2, rej2,res1, rej1, dispatchRequest,undefiend,res3, rej3, res4, rej4]。

  • dispatchRequest是用来执行axios.request的,dispatchRequest方法里面有一个adapter,它会根据不同的环境调用不同的对象。如果是在浏览器环境下,调用XMLHttpRequest对象。如果是nodejs环境下,就调用http对象。这就是为什么它既能在前端使用,也能在后端使用的原因。adapter会对请求到的数据进行解析封装,封装后的对象就是我们能看到的response响应对象

  • 处理完dispatchRequest,就会执行interceptors.response的回调函数。这就是为什么我们看到的执行顺序是,后者的interceptors.request比前者的interceptors.requets先执行,接着执行axios.request,最后顺序执行interceptors.response.

  • 接下来执行我们的业务逻辑。

三、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];
  });

关于“axios异步请求的流程与原理是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“axios异步请求的流程与原理是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网VUE频道。

--结束END--

本文标题: axios异步请求的流程与原理是什么

本文链接: https://www.lsjlt.com/news/98551.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • axios异步请求的流程与原理是什么
    这篇文章主要介绍了axios异步请求的流程与原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇axios异步请求的流程与原理是什么文章都会有所收获,下面我们一起来看看吧。...
    99+
    2022-10-19
  • springmvc处理请求的流程是什么
    Spring MVC处理请求的流程如下:1. 客户端发送请求到DispatcherServlet,DispatcherServlet...
    99+
    2023-08-18
    springmvc
  • django异步请求处理的方法是什么
    Django中的异步请求处理可以通过以下几种方法实现:1. 使用Django的内置异步任务处理机制:Django提供了一个名为`as...
    99+
    2023-09-26
    Django
  • php协程异步请求的方法是什么
    PHP协程是一种并发编程的方式,可以通过异步请求来实现。在PHP中,可以使用swoole扩展来实现协程异步请求。 下面是一个使用sw...
    99+
    2023-10-27
    php
  • ASP.NET处理HTTP请求的流程是什么
    这篇文章主要介绍“ASP.NET处理HTTP请求的流程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NET处理HTTP请求的流程是什么”文章能帮助大家解决问题。一、ASP.NET处理管...
    99+
    2023-06-30
  • jquery异步请求的概念是什么
    本篇内容主要讲解“jquery异步请求的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery异步请求的概念是什么”吧! ...
    99+
    2022-10-19
  • 浏览器请求流程和PHP对请求的处理方法是什么
    这篇“浏览器请求流程和PHP对请求的处理方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“浏览器请求流程和PHP对请求...
    99+
    2023-07-05
  • struts请求转发的流程是什么
    Struts的请求转发流程如下: 客户端发送HTTP请求到Struts的前端控制器(Front Controller)。 前...
    99+
    2023-10-26
    struts
  • react异步请求数据的方法是什么
    在React中,常用的异步请求数据的方法有以下几种:1. 使用fetch API:fetch是现代浏览器提供的一种用于进行网络请求的...
    99+
    2023-08-19
    react
  • gitlab的合并请求是什么原理
    GitLab是一个流行的版本控制管理软件,被许多开发人员用于协作和版本控制。其中一个关键的功能是合并请求(Merge Request),也称为合并申请或合并请求。本文将介绍合并请求的原理以及与GitLab集成的过程,以及如何在团队中使用它来...
    99+
    2023-10-22
  • Python异步与 JavaScript 原生异步的区别是什么
    本篇文章为大家展示了Python异步与 JavaScript 原生异步的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。现在假设我们要请求一个网址:http://httpbin.org/de...
    99+
    2023-06-16
  • HTTP请求和异步编程:Go和JavaScript的最佳实践是什么?
    在现代Web应用程序中,HTTP请求和异步编程是必不可少的,因为它们可以使应用程序更加高效和响应迅速。Go和JavaScript是两种流行的编程语言,它们都有自己的HTTP请求和异步编程最佳实践。本文将探讨这些最佳实践,以帮助您更好地使用...
    99+
    2023-09-26
    javascript 异步编程 http
  • Node中异步编程机制的原理是什么
    这期内容当中小编将会给大家带来有关Node中异步编程机制的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。目前的异步编程主要解决方案有:事件发布/订阅模式Prom...
    99+
    2022-10-19
  • dubbo异步调用的原理是什么
    Dubbo异步调用的原理是通过使用线程池来实现异步调用。首先,服务消费者发送请求给服务提供者,然后服务提供者将请求放入线程池中进行处...
    99+
    2023-10-23
    dubbo
  • webpack的异步加载原理是什么
    这篇文章主要讲解了“webpack的异步加载原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“webpack的异步加载原理是什么”吧!webpack ...
    99+
    2022-10-19
  • 微信小程序怎么使用es6-promise.js封装请求与处理异步进程
    这篇“微信小程序怎么使用es6-promise.js封装请求与处理异步进程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信...
    99+
    2023-06-17
  • Android中网络请求加密的原理是什么
    这篇文章主要介绍了Android中网络请求加密的原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android中网络请求加密的原理是什么文章都会有所收获,下面我们一起来看看吧。非对称加密加密我了解的不多...
    99+
    2023-06-04
  • 微信小程序中es6-promise.js封装请求与处理异步进程的方法
    这篇文章主要介绍“微信小程序中es6-promise.js封装请求与处理异步进程的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序中es6-promise.js封装请求与处理异步进程的方...
    99+
    2023-06-17
  • ajax的原理和流程是什么
    Ajax的全称是Asynchronous JavaScript and XML,即异步JavaScript和XML。它是一种在Web...
    99+
    2023-05-13
    ajax的原理 ajax
  • RocketMQ broker消息投递流程处理PULL_MESSAGE请求的方法是什么
    这篇文章主要介绍“RocketMQ broker消息投递流程处理PULL_MESSAGE请求的方法是什么”,在日常操作中,相信很多人在RocketMQ broker消息投递流程处理PULL_MESSAGE请求的方法是什么...
    99+
    2023-07-05
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作