返回
程序员控制终端请求的关闭方法,让你不再等待
前端
2023-10-08 18:09:08
一、AbortController
AbortController 是一个内置的 JavaScript API,用于中断请求。它提供了一个 abort() 方法,可以立即中断请求。AbortController 的使用非常简单:
const controller = new AbortController();
const signal = controller.signal;
fetch('https://example.com', {
signal
})
.then(response => {
console.log(response);
})
.catch(error => {
console.error(error);
});
// 中断请求
controller.abort();
二、cancelToken
cancelToken 是 axios 提供的一个请求中断机制。它与 AbortController 的工作原理类似,但是更加灵活。cancelToken 可以通过 axios.CancelToken.source() 方法创建:
const source = axios.CancelToken.source();
const cancelToken = source.token;
axios.get('https://example.com', {
cancelToken
})
.then(response => {
console.log(response);
})
.catch(error => {
console.error(error);
});
// 中断请求
source.cancel('Operation canceled by the user.');
三、CancelToken.souce
CancelToken.souce 是 umi-request 提供的一个请求中断机制。它与 cancelToken 的工作原理类似,但是更加强大。CancelToken.souce 提供了多个方法来控制请求,例如:
- cancel(): 中断请求
- throwIfRequested(): 如果请求已经被中断,则抛出异常
const source = CancelToken.souce();
const cancelToken = source.token;
umi-request.get('https://example.com', {
cancelToken
})
.then(response => {
console.log(response);
})
.catch(error => {
console.error(error);
});
// 中断请求
source.cancel('Operation canceled by the user.');
四、比较
特性 | AbortController | cancelToken | CancelToken.souce |
---|---|---|---|
支持的库 | Fetch | axios | umi-request |
灵活度 | 低 | 中 | 高 |
控制方法 | abort() | cancel() | cancel(), throwIfRequested() |
总结
AbortController、cancelToken 和 CancelToken.souce 都是常用的请求中断机制。它们各有优缺点,程序员可以根据自己的需求选择合适的机制。