站长网 教程 Axios适配器实现请求重试的处理办法

Axios适配器实现请求重试的处理办法

Axios 引入了适配器,使得它可以同时支持浏览器和 Node.js 环境。对于浏览器环境来说,它通过封装 XMLHttpRequest API 来发送 HTTP 请求,而对于 Node.js 环境来说,它通过封装 Node.js 内置的 http 和 https 模块来发送 HTTP 请求。 在 Axios 如何缓存请

Axios 引入了适配器,使得它可以同时支持浏览器和 Node.js 环境。对于浏览器环境来说,它通过封装 XMLHttpRequest API 来发送 HTTP 请求,而对于 Node.js 环境来说,它通过封装 Node.js 内置的 http 和 https 模块来发送 HTTP 请求。

在 Axios 如何缓存请求数据? 这篇文章中,阿宝哥介绍了如何通过增强默认的 Axios 适配器,来实现缓存请求数据的功能。同样,采用类似的思路,我们也可以通过增强默认的 Axios 适配器来实现请求重试的功能。

在介绍如何增强默认适配器之前,我们先来看一下 Axios 内置的 xhrAdapter 适配器,它被定义在 lib/adapters/xhr.js 文件中:

// lib/adapters/xhr.js 

module.exports = function xhrAdapter(config) { 

  return new Promise(function dispatchXhrRequest(resolve, reject) { 

    var requestData = config.data; 

    var requestHeaders = config.headers; 

 

    var request = new XMLHttpRequest(); 

    // 省略大部分代码 

    var fullPath = buildFullPath(config.baseURL, config.url); 

    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); 

    // Set the request timeout in MS 

    request.timeout = config.timeout; 

 

    // Listen for ready state 

    request.onreadystatechange = function handleLoad() { … } 

 

    // Send the request 

    request.send(requestData); 

  }); 

}; 

很明显 xhrAdapter 适配器是一个函数对象,它接收一个 config 参数并返回一个 Promise 对象。而在 xhrAdapter 适配器内部,最终会使用 XMLHttpRequest API 来发送 HTTP 请求。为了实现请求重试的功能,我们就可以考虑通过高阶函数来增强 xhrAdapter适配器的功能。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/video/2021/0528/7231.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部