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 ...
随机推荐
- 学习PHP中的国际化功能来查看货币及日期信息
做为一门在世界范围内广泛使用的编程语言,国际化能力往往是衡量一个编程语言是否能够大范围流行的重要内容.特别是对于 PHP 这种以 Web 页面编程为主战场的语言来说,国际化能力更是重中之重.在 PHP ...
- echsop设置伪静态
1.后台商店设置-基本设置-URL重写开启 2.修改httpd.conf文件 AllowOverride None 改为 AllowOverride AllLoadModule rewrite_mod ...
- 腾讯云centos7.5安装jdk1.8
手动解压安装包方法 在user目录下新建java文件夹 cd /usr/ mkdir java 把jdk安装包移动到java目录下 我已经提前下载jdk的tar包 mv jdk-8u251-linux ...
- php文件加密(screw方式)
1.上传已经生成好的执行文件. 2.上传扩展文件到目录: /usr/lib64/php/modules 3.上传配置文件到目录: /etc/php.d 4.执行 ./screw a.php 生成加密后 ...
- VueCLI3 创建vue项目
关于旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli. 如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过 npm uninstall vu ...
- Win32对话框模板创建的窗口上响应键消息,Tab焦点切换消息,加速键消息
今天在学习的时候,发现对话框上不响应键盘消息,查了老半天,终于成功了,现分享出来, 1,首先要在消息循环的时候加如下代码. int WINAPI WinMain(_In_ HINSTANCE hIns ...
- 初探区块链数字加密资产标准ERC721
ERC721介绍 数字加密货币大致可以分为原生币(coin)和代币(token)两大类.前者如BTC.ETH等,拥有自己的区块链.后者如Tether.TRON.ONT等,依附于现有的区块链.市场上流通 ...
- 学校选址(ArcPy实现)
一.背景 合理的学校空间位置布局,有利于学生的上课与生活.学校的选址问题需要考虑地理位置.学生娱乐场所配套.与现有学校的距离间隔等因素,从总体上把握这些因素能够确定出适宜性比较好的学校选址区. 二.目 ...
- CF850E Random Elections 题解
题目传送门 题目大意 没法描述,过于繁杂. 思路 果然自己是个菜鸡,只能靠读题解读题,难受极了,其实不是很难自己应该做得出来的....哎.... 不难发现可以统计 \(A\) 获胜的情况乘上 \(3\ ...
- 洛谷3628 APIO2010特别行动队(斜率优化)
考虑最普通的\(dp\) \[dp[i]=max(dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c \] qwq 由于演算纸扔掉了 qwq 所以直接给出最后的 ...