返回

程序员控制终端请求的关闭方法,让你不再等待

前端

一、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 都是常用的请求中断机制。它们各有优缺点,程序员可以根据自己的需求选择合适的机制。