赞
踩
原生的XMLHttpRequest,是支持取消http请求(abort)操作的: XMLHttpRequest.abort()
fetch与XMLHttpRequest(XHR)类似,是ES6之后浏览器(除IE之外)默认支持的http操作函数。可惜不是默认支持abort操作。但我们可以通过AbortController来实现
// 声明AbortController const controller = new AbortController(); // 正常的http调用 fetch('https://test.github.io', { signal: controller.signal }) .then(r => r.json()) .then(response => { console.log(response); }) .catch(err => { if (err.name === 'AbortError') { console.log('Fetch was aborted') } else { console.log('Error', err) } }); // 需要取消请求时,调用: controller.abort()
axios 已经实现了abort操作
var source = axios.CancelToken.source();
axios.get('https://jackniu81.github.io', {
cancelToken: source.token
}).catch(function(err) {
if (axios.isCancel(err)) {
// handle our cancel operation
console.log('Request canceled', err.message);
} else {
// handle real error here
}
});
// 需要取消请求时,调用:
source.cancel('Abort Request');
$.ajax内部已经实现了abort功能。直接调用.abort()即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。