AbortController.abort()
通过 AbortController 和 AbortSignal 来中⽌⽹络请求。
使⽤ AbortController 创建⼀个新的 AbortController 对象,然后使⽤它的 abort() ⽅法来中⽌请求。在创建请求时,将 AbortController.signal 分配给请求的 signal 属性,以便在调⽤ abort() ⽅法时取消请求。
js
const controller = new AbortController();
const signal = controller.signal;
fetch(url, { signal })
.then((response) => {
// Handle the response
})
.catch((error) => {
if (error.name === "AbortError") {
console.log("Request was cancelled");
} else {
console.log("Request failed:", error);
}
});
// To abort the request, call the following:
controller.abort();
abort() ⽅法会在 DOM 请求完成之前中⽌它。它能够中⽌ fetch 请求、各种响应主体或者流的消耗。
XMLHttpRequest.abort()
js
const xhr = new XMLHttpRequest()
xhr.open(method,url)
xhr.send()
// 然后在某个时间点调⽤ abort() ⽅法
xhr.abort();
当⼀个请求被终⽌,它的 readyState 将被置为 XMLHttpRequest.UNSENT (0),并且请求的
status 置为 0。
CancelToken
js
const source = axios.CancelToken.source();
axios.get('/api/data', {
cancelToken: source.token
}).then(response => {
// 处理响应
}).catch(error => {
if (axios.isCancel(error)) {
console.log('请求已被取消:', error.message);
} else {
console.log('请求出错:', error.message);
}
});
source.cancel('请求已被⽤户取消');