axios系列之取消请求

文章の目录


使用 cancel token 取消请求

Axios 的 cancel token API 基于cancelable promises proposal,它还处于第一阶段。

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

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios
	.get("http://localhost/user/12345", {
    
    
		cancelToken: source.token
	})
	.catch(function (thrown) {
    
    
		console.log(1);
		if (axios.isCancel(thrown)) {
    
    
			console.log("Request canceled1", thrown.message);
		} else {
    
    
			// 处理错误
		}
	});

axios
	.post(
		"http://localhost/user/12345",
		{
    
    
			name: "new name"
		},
		{
    
    
			cancelToken: source.token
		}
	)
	.catch(function (thrown) {
    
    
		console.log(2);
		if (axios.isCancel(thrown)) {
    
    
			console.log("Request canceled2", thrown.message);
		} else {
    
    
			// 处理错误
		}
	});

// 取消请求(message 参数是可选的)
source.cancel("Operation canceled by the user.");

如果需要后续取消请求,需要在cancelToken中配置,并在catch中对取消的请求进行后续处理。

在这里插入图片描述

在这里插入图片描述
还可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token:

const CancelToken = axios.CancelToken;
let cancel;

axios
	.get("http://localhost/user/12345", {
    
    
		cancelToken: new CancelToken(function executor(c) {
    
    
			// executor 函数接收一个 cancel 函数作为参数
			cancel = c;
		})
	})
	.catch(function (thrown) {
    
    
		if (axios.isCancel(thrown)) {
    
    
			console.log("Request canceled", thrown.message);
		} else {
    
    
			// 处理错误
		}
	});

// cancel the request
cancel();

在这里插入图片描述
在这里插入图片描述
注意: 可以使用同一个 cancel token 取消多个请求

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

猜你喜欢

转载自blog.csdn.net/weixin_62277266/article/details/128603009