[js] axios拦截器原理是什么?

[js] axios拦截器原理是什么?

拦截器原理其实就是用use添加用户自定义的函数到拦截器的数组中。
最后把他们放在拦截器请求前,请求后。组成promise链式调用。

  // 组成`Promise`链// Hook up interceptors middleware// 把 xhr 请求 的 dispatchRequest 和 undefined 放在一个数组里var chain = [dispatchRequest, undefined];// 创建 Promise 实例var promise = Promise.resolve(config);// 遍历用户设置的请求拦截器 放到数组的 chain 前面this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {chain.unshift(interceptor.fulfilled, interceptor.rejected);});// 遍历用户设置的响应拦截器 放到数组的 chain 后面this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {chain.push(interceptor.fulfilled, interceptor.rejected);});// 遍历 chain 数组,直到遍历 chain.length 为 0while (chain.length) {// 两两对应移出来 放到 then 的两个参数里。promise = promise.then(chain.shift(), chain.shift());}return promise;

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中集合set,字典dict和列表list的区别以及用法

python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯一的,list除了变量外都可以存储 dict{"a":1,"b&qu…

[js] fetch和axios请求的原理都是基于XMLHttpRerequst吗?

[js] fetch和axios请求的原理都是基于XMLHttpRerequst吗? axios是基于XMLHttpRequest的封装,而fetch是js原生支持的网络请求api,这在浏览器底层进行了支持。个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易&#x…

LeetCode(81): 搜索旋转排序数组 II

Medium! 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 示…

网站三级分销数据库如何设计,简单案例

一、问题产生 有小伙伴微信私信我,说老板想设计一套三级返佣的微信淘宝客裂变系统,然后问我怎么搞… 咳咳,对于三级分销的数据库设计,相信很多小伙伴头疼的可能不是设计上,而是查询上,因为通常涉及到会员…

[js] 举例说明面向对象编程有什么缺点?

[js] 举例说明面向对象编程有什么缺点? 有实例化开销,内存消耗比较大,性能消耗比较大个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端…

第6课 仿Siri机器人-语音朗读和语音识别

一、功能设计输入文本,单击“朗读”按钮,由手机读出该文本(如果没有输入文本,则弹出消息框警告“请输入文本);单击“识别”按钮,读入语音,从文本框中输出文字。(另&#…

口述完SpringMVC执行流程,面试官就让同事回家等消息了

Srping MVC 执行流程真的是老生常谈的话题了,最近同事小刚出去面试,前面面试官相继问了几个 Spring 相关的问题,但当面试官问他,你知道 Srping MVC 的执行流程吗?小刚娴熟的巴拉巴拉回答完后,面试官就让他回…

[js] 使用js实现一个循环队列

[js] 使用js实现一个循环队列 const queue [] let queueRunning false let loopTimer null const loop task > {// do something...console.log(task)if (isQueueHasTask()) {// you can add new tasks in the middle of the queue.loopTimer setTimeout(() > {loo…

iview-cli 采坑记录

1.iview-cli 关于跨域的问题: 使用 webpack-devServer 启动 node 服务器可以通过配置 proxy 对象实现跨域: let proxyUrl http://dev.api.wankaonline.gm825.net;devServer: {proxy: {/index: {target: proxyUrl,pathRewrite: {^/index : /index},ws: t…

如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?

前言 相信大家在面试的时候经常会遇到「线程池」相关的问题,比如: 什么是线程池?线程池的优点?有哪几种创建线程池的方式?四种创建线程池的使用场景?线程池的底层原理?线程池相关的参数&#…

[js] Number()的存储空间是多大?假如接口返回一个超过最大字节的数字怎么办?

[js] Number()的存储空间是多大?假如接口返回一个超过最大字节的数字怎么办? Number类型的最大值为2的53次方,即9007199254740992,如果超过这个值,比如900719925474099222,那么得到的值会不精确&#xff0…

C++ 判断系统大小字节序

bool IsLitterEndian() {union UTest{std::uint16_t t;std::uint8_t c;} endianTest{ 0x01 };return (endianTest.c 0x01); } 转载于:https://www.cnblogs.com/fluteary/p/9178627.html

macos brew zookeeper,安装后zookeeper启动失败?

一、Zookeeper安装流程 执行如下安装命令: brew install zookeeper执行截图如下: 安装后查看 zookeeper 安装信息(默认拉取最新版本) brew info zookeeper执行截图如下: 二、Zookeeper启动、状态查询、及关闭 启…

[js] alert如何让文本换行?

[js] alert如何让文本换行? 先考虑兼容性的问题,再使用转义字符 ie: alert("A\r\nB"); //chrome也可以实现 chrome: alert("A\nB");个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易…

批量更新数据(BatchUpdate)

批量更新数据&#xff08;BatchUpdate&#xff09; /// <summary> /// 批量更新数据&#xff0c;注意&#xff1a;如果有timestamp列&#xff0c;要移除 /// </summary> /// <param name"sourceTable">源数据</param> /// <param name&qu…

[js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互?

[js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互&#xff1f; API是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定。如果已经建立了连接&#xff0c;那么单次请求数据到请求结束应该是一次交互&#xff1b;如果没有建立连接&#xff0c;根…

为什么SimpleDateFormat不是线程安全的?

一、前言 日期的转换与格式化在项目中应该是比较常用的了&#xff0c;最近同事小刚出去面试实在是没想到被 SimpleDateFormat 给摆了一道… 面试官&#xff1a;项目中的日期转换怎么用的&#xff1f;SimpleDateFormat 用过吗&#xff1f;能说一下 SimpleDateFormat 线程安全问…

【Python 学习_第2周_程序代码】金角大王培训第二周练习_购物车代码,将写的代码和老师代码比较,记录下收获...

培训第二周&#xff0c;课堂练习为编写一段购物车代码&#xff0c;需求描述如下&#xff1a; 1.提示用户输入薪水 2.用户输入薪水后&#xff0c;打印商品编号、内容及价格 3.提醒用户输入商品代码&#xff0c;若余额大于等于商品价格&#xff0c;可购买&#xff1b;若小于&…

[js] js的循环结构有哪些?

[js] js的循环结构有哪些&#xff1f; for for in while do while个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161

仅针对如下错误内容&#xff1a; Cannot send, channel has already failed: tcp://127.0.0.1:8161一种尝试解决&#xff0c;修改连接端口为 61616&#xff1a; tcp://127.0.0.1:61616在没有修改过 ActiveMQ 配置文件情况下&#xff0c;默认 tcp 端口为 61616&#xff0c;htt…