axios中取消请求

在平时的开发过程中,我们会经常遇到菜单切换的问题,在一些切换频率较低的情况下,在切换到另一个页面的时候,上一个页面基本没有未完成的异步请求,即时有,在一些情况下也是可以忽略的。但是,在一些切换频率较高的页面中,如果我们不处理这些未完成的请求,那么这些请求会极大的影响页面的性能,甚至导致之后的请求超时。

如果需要断开Javascript的ajax请求,一种是通过设置时间,超时自动断开,另一种我们可以调用XMLHttpRequest对象上的abort方法。

在使用Vue的过程中,大多是使用axios来发起http请求,那么在axios中我们要怎么中止某个http请求呢?遍寻网上教程无果后,想起了革命先辈的名言–自己动手,丰衣足食。好了,我要秀英语水平了,那么我们只好自己看英文文档了。打开axios的github主页,果然文档才是我们的好帮手,很快就找到解决问题的办法。

 1 var CancelToken = axios.CancelToken;
 2 var source = CancelToken.source();
 3
 4 axios.get(‘/user/12345‘, {
 5 cancelToken: source.token
 6 }).catch(function(thrown) {
 7 if (axios.isCancel(thrown)) {
 8 console.log(‘Request canceled‘, thrown.message);
 9 } else {
10 // handle error
11 }
12 });
13
14 // cancel the request (the message parameter is optional)
15 source.cancel(‘Operation canceled by the user.‘);

查找axios的文档,发现可以通过使用CancelToken来取消axios发起的请求,我们可以自己写一段代码来验证。

 1 var app = new Vue({
 2   el: ‘#app‘,
 3   data: {
 4     message: ‘Hello Axios!‘,
 5     source: null
 6   },
 7   methods: {
 8     sendRequest() {
 9       this.source = this.axios.CancelToken.source(); // 这里初始化source对象
10       this.axios.get(url, {
11         cancelToken: this.source.token // 这里声明的cancelToken其实相当于是一个标记,
12                                        // 当我们要取消请求的时候,可以通过这个找到该请求
13       })
14       .then(res => {
15         // 你的逻辑
16       })
17       .catch(res => {
18         // 如果调用了cancel方法,那么这里的res就是cancel传入的信息
19         // 你的逻辑
20       })
21     },
22     cancel() {
23       this.source.cancel(‘这里你可以输出一些信息,可以在catch中拿到‘)
24     }
25   }
26 })

---------------------
作者:张飞翔
来源:转载
原文:https://blog.csdn.net/sir1241/article/details/76099529
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/913815ccmm/p/10040923.html

时间: 2024-08-24 21:11:56

axios中取消请求的相关文章

axios中get请求的参数中带数组的处理方法

const qs = require('qs'); axios.get(url, { params:{ arr: [1,2,3] }, paramsSerializer: function(params) { return Qs.stringify(params, {arrayFormat: 'repeat'}) } }) 引用qs的数组序列化即可. 原文地址:https://www.cnblogs.com/LLSutdy/p/11670622.html

vue中采用axios发送post请求

这几天在使用vue中axios发送get请求的时候很顺手,但是在发送post请求的时候老是在成功的回调函数里边返回参数不存在,当时就纳闷了,经过查阅资料,终于得到了解决方案,在此做一总结: 首先我们在运用npm install axios的时候就会默认安装qs,因此我们就得将qs引入到axios中,然后需要再通过实例化一个新的axios,并且设置他的消息头为'content-type': 'application/x-www-form-urlencoded' 1 let qs = require

vue中axios发送post请求,后端(@RequestParam)接不到参数

遇到的问题描述 :axios post 请求,后端接收不到参数. 我们的接口是java,用@RequestParam来接收前端的参数 解决方案:使用qs:axios中已经包含有qs,所以无需重新安装,直接引入就好 import Qs from 'qs'//引入qs let chedata = { data: encStr, sign: md5.hexMD5(che), timestamp: timestamp, } //chedata是我需要传递给后端的参数 console.log(Qs.str

在vue中使用axios发送post请求,参数方式

由于后台接收的参数格式为FormData格式, 在axios中参数格式默认为, 在传参数前,将原先官方提供的格式 改为如下: axios({ url: '../../../room/listRoomPage', method: 'post', data: {offset: 0, limit: 9999, roomCode: "", roomtypeId: 0, floorId: 0}, transformRequest: [function (data) { var oMyForm =

vue使用Axios做ajax请求

vue2.0之后,就不再对vue-resource更新,而是推荐使用axios 1. 安装 axios $ npm install axios 或 $ bower install axios 2. 在要使用的文件中引入axios import axios from 'axios' 3. 使用axios做请求 可以通过向 axios 传递相关配置来创建请求, 只有 url 是必需的.如果没有指定 method,请求将默认使用 get 方法. { // `url` 是用于请求的服务器 URL url

axios介绍与使用说明 axios中文文档

本周在做一个使用vuejs的前端项目,访问后端服务使用axios库,这里对照官方文档,简单记录下,也方便大家参考. Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中.github开源地址https://github.com/axios/axios 特性 在浏览器中创建 XMLHttpRequests 在 node.js 则创建 http 请求 支持 Promise API 支持拦截请求和响应 转换请求和响应数据 取消请求 自动转换 JSON 数据 客

Retrofit2.0+ RxJava 优雅的取消重复避免并取消请求(十一)

Tamic/文 地址:http://blog.csdn.net/sk719887916/article/details/54575137 前几篇主要介绍了retrofit基本使用,结合rxJava的案列,以及RxJava结合retrofit的封装,包括公用参数,局部参数请求头添加,缓存,https, 文件上下传,结果解析,异常处理等,还有一些技巧,那么还有一个比较关键的是取消问题. 两者结合技巧可点击阅读:http://blog.csdn.net/sk719887916/article/deta

Android应用中网络请求库Volley的使用

接上文,这次来说一下如何使用Volley,会给出一些范例,和原理 Volley使用 StringRequest // 初始化一个请求队列,RequestQueue是volley库的类 RequestQueue queue = Volley.newRequestQueue(this); String url ="http://www.baidu.com"; //定义一个字符串型请求队列,需要传递4个参数分别是:url, 请求的方式(get, post..),响应成功的处理函数匿名对象,

android-async-http取消请求

前言 关于android-async-http诸多,相信大家都有一定的了解.我这这里只简单的说一下它的取消请求这一块.所有结论都是在同一个Context情况下. 能被取消请求的请求 android-async-http能被取消请求的请求必须传入一个Context,否则则没有任何效果.以简单的get请求为例. get(context, url, params, responseHandler); 下面是一个网络请求类: /**  * 网络请求  * @author Yang  * @date 20