正在向服务端请求中 ajax 如何手动取消请求
在JavaScript中,可以使用XMLHttpRequest
对象的abort
方法来取消(中止)一个正在进行的AJAX请求。但是,如果你使用的是现代的fetch
API,那么你需要使用其他方法来取消请求,因为fetch
基于Promise,不直接提供中止请求的机制。
以下是使用XMLHttpRequest
和fetch
API取消请求的示例代码:
使用XMLHttpRequest取消请求:
var xhr = new XMLHttpRequest();
xhr.open("GET", "your-endpoint");
// 可选:设置请求的事件监听器
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
try {
if (xhr.status === 200) {
// 处理请求成功的响应
} else {
// 处理请求失败的响应
}
} catch (e) {
// 处理异常
}
}
};
// 发送请求前调用abort方法取消请求
xhr.send();
xhr.abort();
使用fetch取消请求:
// 创建AbortController实例
const controller = new AbortController();
const signal = controller.signal;
// 发起请求
fetch('your-endpoint', { signal })
.then(response => response.json())
.then(data => console.log(data))
.catch(e => console.log('Fetch error:', e));
// 取消请求
controller.abort();
在fetch
的选项中,我们传入了一个对象,该对象包含了signal
属性,它是由AbortController
创建的,用于取消请求。当调用controller.abort()
方法后,如果fetch
请求还没有完成,它将会抛出一个异常,通常需要用.catch()
来捕获这个异常。
评论已关闭