Vue中Axios中取消请求及阻⽌重复请求的⽅法⽬录
阻⽌请求⽬的:
常见情况:
新建 axios.js ⽂件
全局 main.js 引⼊
阻⽌请求⽬的:
为了防⽌⽤户在⽹络不好或者其他情况下短时间内重复进⾏接⼝请求,从⽽导致前端向后端重复发送多次请求。
常见情况:
PC端:输⼊框搜素,多次请求接⼝移动端:移动端很容易造成误操作或多操作请求(移动端没有点击延迟)
注意:有Loading遮罩时也有可能发⽣重复请求
两会翻译
新建 axios.js ⽂件
import axios from "axios";
// import router from "../js/router";
// import { Message } from "element-ui";
/**
* @description 函数返回唯⼀的请求key **/
function getRequestKey(config) {
let {
method,
url,
params,
data
} = config;
// axios中取消请求及阻⽌重复请求的⽅法
// 参数相同时阻⽌重复请求:
// return [method, url, JSON.stringify(params), JSON.stringify(data)].join("&");
// 请求⽅法相同,参数不同时阻⽌重复请求
return [method, url].join("&");
}
/**
* @description 添加请求信息 **/
frightlet pendingRequest = new Map();
function addPendingRequest(config) {
// console.log(config.url)
let requestKey = getRequestKey(config);
config.cancelToken = config.cancelToken || new axios.CancelToken((cancel) => {
acc是什么意思
if (!pendingRequest.has(requestKey)) {
pendingRequest.t(requestKey, cancel);
}
});
}
/**
五十步笑百步翻译
* @description 取消重复请求 **/
function removePendingRequest(config) {
let requestKey = getRequestKey(config);
if (pendingRequest.has(requestKey)) {
// 如果是重复的请求,则执⾏对应的cancel函数
let cancel = (requestKey);
cancel(requestKey);
// 将前⼀次重复的请求移除
pendingRequest.delete(requestKey);
}
}
/
**
* @description 请求拦截器 **/
quest.u(
appzfunction (config) {
// 检查是否存在重复请求,若存在则取消已发的请求
removePendingRequest(config);
// 把当前请求信息添加到pendingRequest对象中
addPendingRequest(config);
return config;
},
function (error) {
gift的同义词
ject(error);
}
);
盛夏的果实日文版/**
* @description 响应拦截器 **/
spon.u(
function (respon) {
// 对响应数据做点什么
fig);
// 该⽅法是项⽬中⽤到
// if (ssage == "您没有获得授权") {
成都留学机构/
/ Message({loll
// type: "warning",
// message: "您没有获得授权,请重新登录",
// });
// veItem('token');
// veItem('data');
// router.push({
// name: "login",
// });
// }
return respon;
},
function (error) {
// 从pendingRequest对象中移除请求
fig || {});
if (axios.isCancel(error)) {
console.log("被取消的重复请求:" + ssage);
}
ject(error);
}
);
export default axios
全局 main.js 引⼊
import Vue from "vue";
贝尔机器人import axios from "./until/axios";
Vue.prototype.$axios = axios;
到此这篇关于Vue中Axios中取消请求及阻⽌重复请求的⽅法的⽂章就介绍到这了,更多相关Axios取消请求及阻⽌重复请求内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!