axios & fetch 异步请求
// 一、创建实例
const request = axios.create({
baseURL: "http://kg.zhaodashen.cn/v2",
headers: {
// token:
// localStorage.getItem("token") || "adf7cbdcdc62b07d94f86339e5687ca51",
"content-type": "application/x-www-form-urlencoded",
},
timeout: 5000,
});
// 二、拦截器
// 语法:axios/request.interceptors.request/response.use(callback, callback)
// 作用:拦截用户每次的请求和相应数据 来过滤
// 请求:点击按钮 -> 触发methods -> 发送异步请求 -> 拦截( Loading、token、CancelToken等 -> 发送
// 响应:后端返回数据 -> 拦截(关闭Loading、 接口权限、TOKEN过期、res.data.data过滤 -> 异步请求then -> 结束
// 强调:异步请求then拿到什么数据 取决于相应拦截器返回的结果
let loadingInstance = null;
let ajax = {};
request.interceptors.request.use(
(config) => {
// console.log(config);
// 全局遮罩Loading
// loadingInstance = ELEMENT.Loading.service();
// token
config.headers["token"] =
localStorage.getItem("token") || "adf7cbdcdc62b07d94f86339e5687ca51";
//取消重复请求
if (ajax[config.url]) {
ajax[config.url].cancel("用户取消了请求");
// delete ajax[config.url]
}
ajax[config.url] = axios.CancelToken.source();
config.cancelToken = ajax[config.url].token;
return config;
},
(err) => {
return Promise.reject(err);
}
);
request.interceptors.response.use(
(response) => {
// 关闭全局Loading
loadingInstance.close();
console.log(response);
return response.data;
},
(error) => {
// 失败响应
let errorObj = JSON.parse(JSON.stringify(error));
// 关闭Loading
if (loadingInstance) loadingInstance.close();
// 判断失败原因
if (errorObj.message.includes("timeout")) {
ELEMENT.Message.error("网络繁忙,请刷新后重试...");
} else if (errorObj.message.includes("404")) {
ELEMENT.Message.error("大兄弟,接口地址写错了 404...");
} else if (errorObj.message.includes("取消")) {
console.log("重复点击取消...", errorObj);
} else {
// 邮件报警
}
return Promise.reject(error);
}
);
//
axios & fetch 异步请求的更多相关文章
- axios浏览器异步请求方法封装 XMLHttpRequest
axios学习笔记defaults(浏览器端异步请求处理方式) 浏览器异步请求方法封装,主要使用XMLHttpRequest lib/adapters/xhr.js //入口 var utils = ...
- js fetch异步请求使用详解
目录 认识异步 fetch(url) response.json() 结合async和await 异常处理 post请求 认识异步 首先我们得明白请求是一个异步的过程. 因为请求需要时间向服务器发送请 ...
- vue中使用axios(异步请求)和mock.js 模拟虚假数据
一.使用axios 1.安装 npm install --save axios 2.引用 import Axios from 'axios' Vue.prototype.Axios = Axios 二 ...
- vue-d2admin-axios异步请求登录,先对比一下Jquery ajax, Axios, Fetch区别
先说一下对比吧 Jquery ajax, Axios, Fetch区别之我见 引言 前端技术真是一个发展飞快的领域,我三年前入职的时候只有原生XHR和Jquery ajax,我们还曾被JQuery 1 ...
- 异步请求xhr、ajax、axios与fetch的区别比较
目录 1. XMLHttpRequest对象 2. jQuery ajax 3. axios 4. fetch 参考 why: 为什么会出现不同的方法呢? what: 这些都是异步请求数据的方法.在不 ...
- 异步请求与中断 ( XHR,Axios,Fetch对比 )
随着AJAX技术的诞生,前端正式进入了局部刷新和前后端分离的新时代,最初的服务请求技术是XHR,随着技术发展和ES6的诞生,jquery ajax,axios,fetch 等技术的产生让前端的异步请求 ...
- vue 中使用 async/await 将 axios 异步请求同步化处理
1. axios 常规用法: export default { name: 'Historys', data() { return { totalData: 0, tableData: [] } }, ...
- axios - 基于 Promise 的 HTTP 异步请求库
axios 是基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用.Vue 更新到2.0之后,作者就宣告不再对 vue-resource 模块更新,而是推荐使用 a ...
- js fetch处理异步请求
以往一直认为异步请求只能使用原生js的XMLHttpRequest或jQuery的$.ajax().$.post()等框架封装的异步请求方法 原来js还提供fetch来替代XMLHttpRequest ...
随机推荐
- Spring Cloud Hystrix 学习(一)
在学习Hystrix之前,首先引入一个问题场景,服务雪崩.如下图所示: 可以看到,三个入口服务A.B.C最终都会请求到服务T.当服务T的请求过载,打满CPU都无法匹配请求的频率时,同步调用的上级服务就 ...
- php curl下载文件由于空格导致下载文件失败
<?php //$result=httpcopy('http://www.phpernote.com/image/logo.gif'); echo '<pre>';print_r($ ...
- 取得get参数 从url
1. getUrlParam.js define(function() { // url参数 var data, index; (function init() { data = []; index ...
- Fillder抓包配置
Faillder设置,完成以下设置后重启Fillder Fillder工具配置 设置端口 端口设置 (根据公司限制使用范围内的端口) 设置是否远程连接 勾选Decrypt HTTPS traffic ...
- Jmeter使用问题记录
Jmeter下载安装,设置中文,返回值乱码处理,下载接口测试 下载地址 解压后,在Jmeter的bin文件夹下启动 修改默认启动为中文简体:打开bin目录下的jmeter.properties文件,在 ...
- Linux基本命令 和 Regex 正则表达式
Linux基本命令 和 Regex 正则表达式 Regex 基本语法 常用匹配规则 [aeiouAEIOU] # 从中随机选择一个 [0-9]{4} # 从中选择4个 .* # 匹配任意字符 \w # ...
- tcl概述
tcl,全名tool command language,是一种通用的工具语言. 1)每个命令之间,通过换行符或者分号隔开: 2)tcl的每个命令包含一个或者多个单词,默认第一个单词表示命令,第二个单词 ...
- el-scrollbar滚动条置底
<el-scrollbar ref="leftScrollbar" style="height: 600px"></el-scrollbar& ...
- css3鼠标悬停图片边框线条动画特效
css3鼠标经过内容区时,边框线条特效效果制作. html: <div class="strength grWidth hidden"> <div class ...
- (课内)信安数基RSA-基础&&解密加速
RSA基本实现 首先获得N比特的伪随机数:使用Random库中内容. randint(n,m) 表示生成一个在n和m之间的随机数, **表示乘幂. getPrime找素数,or 1运算是一种优化:如果 ...