当前位置: 首页 > news >正文

如何做一家专门卖零食的网站php建站软件

如何做一家专门卖零食的网站,php建站软件,休闲食品网站模板,jquery html转wordpress在单页面应用中通常会对请求进行catch处理,如果用户打开a页面后页面发出了一个请求去获取aaa,但是由于某种原因请求一直在pending。此时用户又进入了b页面,在浏览时a页面的请求失败了,然后页面弹出提示:“数据aaa请求失…

在单页面应用中通常会对请求进行catch处理,如果用户打开a页面后页面发出了一个请求去获取aaa,但是由于某种原因请求一直在pending。此时用户又进入了b页面,在浏览时a页面的请求失败了,然后页面弹出提示:“数据aaa请求失败”。这就很尴尬了。虽然在对于a页面没什么问题,但是对于b页面来说这就是无用的提示。这时就需要在跳转页面时杀掉正在pending的请求了

axios的cancelToken

https://www.kancloud.cn/yunye/axios/234845

使用 cancel token 取消请求
可以使用 CancelToken.source 工厂方法创建 cancel token,像这样:

var CancelToken = axios.CancelToken;
var source = CancelToken.source();axios.get('/user/12345', {cancelToken: source.token
}).catch(function(thrown) {if (axios.isCancel(thrown)) {console.log('Request canceled', thrown.message);} else {// 处理错误}
});// 取消请求(message 参数是可选的)
source.cancel('Operation canceled by the user.');

还可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token:

var CancelToken = axios.CancelToken;
var cancel;axios.get('/user/12345', {cancelToken: new CancelToken(function executor(c) {// executor 函数接收一个 cancel 函数作为参数cancel = c;})
});// 取消请求
cancel();

vue路由跳转时cancel请求

定义请求services.js

import axios from 'axios';const url = 'http://localhost:3001';export function AApi() {return axios.get(`${url}/a`);
}export function BApi() {return axios.get(`${url}/b`);
}export function CApi() {return axios.get(`${url}/c`, {cancelToken: null, // 避免被加入cancel队列});
}

定义axios拦截器设置cancelToken

export * from './services';import axios from 'axios';const cancelTokenSources = new Map(); // 定义cancel队列axios.interceptors.request.use(config => { // 请求拦截器中将请求加入cancel队列if (!config.hasOwnProperty('cancelToken')) { // 排除不需要cancel的请求const source = axios.CancelToken.source();cancelTokenSources.set(source.token, source.cancel); // 加入cancel队列config.cancelToken = source.token;}return config;
}, error => Promise.reject(error));axios.interceptors.response.use(res => { // 响应拦截器中从cancel队列中移除if (res.config.cancelToken) {cancelTokenSources.delete(res.config.cancelToken);}return res;
}, error => {if (axios.isCancel(error)) {cancelTokenSources.delete(error.message)}return Promise.reject(error)
});export default cancelTokenSources;

将需要放弃的请求加入cancel队列

定义路由router.js

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import About from './views/About.vue'
import cancelTokenSources from './api';Vue.use(Router);const router = new Router({mode: 'history',base: process.env.BASE_URL,routes: [{path: '/',name: 'home',component: Home},{path: '/about',name: 'about',// route level code-splitting// this generates a separate chunk (about.[hash].js) for this route// which is lazy-loaded when the route is visited.component: About}]
});router.afterEach(() => { // 路由跳转杀请求for (const [cancelToken, cancel] of cancelTokenSources) {cancel(cancelToken); // cancel 正在pending的请求}
});export default router;

路由跳转时对cancel队列进行遍历kill

定义about页面,放出请求

<template><div class="about"><h1>This is an about page</h1></div>
</template><script>import { AApi, BApi, CApi } from '../api';import axios from 'axios';export default {name: 'about',mounted() {AApi().catch(err => {if (axios.isCancel(err)) {console.log('请求被关闭了');} else {console.log('请求出问题了');}});BApi().catch(err => {if (axios.isCancel(err)) {console.log('请求被关闭了');} else {console.log('请求出问题了');}});CApi().catch(err => {if (axios.isCancel(err)) {console.log('请求被关闭了');} else {console.log('请求出问题了');}});}}
</script>

效果图

进入about页面

在这里插入图片描述

跳转至其他页面

image

由于c接口加入了cancelToken: null, 所以不会被杀掉。a和b状态已经变为canceled。
在这里插入图片描述

http://www.yayakq.cn/news/494164/

相关文章:

  • 上饶建设局网站模具 东莞网站建设
  • 佛山专业的网站建设公司销售手机网站的后期安排
  • 网站建设 实施计划苏州吴江做网站公司
  • 网站的回到顶部怎么做wordpress支持linux吗
  • 仙居网站设计汽车门户网站 源码
  • 网站301了不知道在哪做的定制手机网站
  • 福州网站建设方案咨询宁波seo深度优化平台有哪些
  • 二维码网站建设源码专业建网站 优帮云
  • 建商城网站的平台nas wordpress备案
  • 临安规划建设局网站载网站源码 怎么下载不了
  • 全网模板建站系统计算机程序网站开发是什么
  • 网站建设岗位廉政风险防控一小时学会网站建设
  • 金融网站排名优化正在建设中的网站可算违规
  • 云服务器建立多个网站公众号微网站开发
  • 网站开发相关知识搜狗网址大全
  • 胡芦娃app软件下载网站怎么做百度搜到的网站免费的
  • 网站八个沈阳住房和城乡建设厅网站
  • 免费移动网站模板泰安市最新招聘信息
  • 卡盟网站制作教程网页设计公司简约
  • 南京网站c建设云世家网站建设丨找王科杰信誉
  • 怎么自己网站建设wordpress自动清缓存
  • 网站建设者属于广告经营者吗thinphp 做外贸网站
  • 沃尔玛官方网站查余额微信如何建网站
  • 贵州萝岗seo整站优化泊头网站排名优化
  • 外贸搜素网站呼伦贝尔旅游包车网站咋做
  • 应聘网站建设工程师深圳网站建设黄浦网络 骗子
  • 建设企业网站前市场分析个人可以备案哪些网站
  • 在线探测网站开发语言东莞营销网站建设优化
  • 网站空间买什么的好网站是公司域名是个人可以
  • 沧州企业网站建设方案源码库官网