axios.CancelToken和isCancel
- cancelToken的作用是获取取消函数,用来手动取消接口。
- axios.isCancel的作用是在处理处罚错误的时间判定当前错误,是否是由于取消导致的。
使用方式1
- const testFun = async () => {
- let cancel: any; // 保存取消函数
- // 发送请求,配置 cancelToken
- axios
- .get('/api/authorization/initData1', {
- cancelToken: new axios.CancelToken(function executor(c) {
- cancel = c; // 将取消函数赋值给外部变量
- }),
- })
- .catch((err) => {
- if (axios.isCancel(err)) {
- console.log('请求已取消!', err);
- } else {
- console.log('其他错误!', err);
- }
- });
- // 取消请求
- cancel('请求被终止11');
- };
复制代码 如下图,这个接口就被cancel了
使用方式2
- const axios = require('axios');
- // 创建 CancelToken 的 source 对象
- const source = axios.CancelToken.source();
- // 发送请求,配置 cancelToken
- axios.get('/api/data', {
- cancelToken: source.token
- })
- .then(response => console.log(response))
- .catch(error => {
- if (axios.isCancel(error)) {
- console.log('请求已取消:', error.message);
- } else {
- // 处理其他错误
- }
- });
- // 取消请求(可传入提示信息)
- source.cancel('用户取消了请求');
复制代码 AbortController
欣赏器的原生api。全部的哀求库都能使用这个方法。全部欣赏器都支持。
- AbortController 的实例 用来绑定到anxios的signal 上。
- error.name === ‘CanceledError’。查抄是否取消范例的错误
- const testFun1 = async () => {
- const controller = new AbortController();
- axios
- .get('/api/authorization/initData', {
- signal: controller.signal, // 绑定 AbortSignal
- })
- .then((response) => console.log(response))
- .catch((error) => {
- if (error.name === 'CanceledError') {
- // 检查是否取消
- console.log('请求已取消!', error);
- } else {
- console.error('其他错误:', error);
- }
- });
- // 触发取消
- controller.abort('这是一次手动取消');
- };
复制代码 兼容性: 全部今世欣赏器均支持 AbortController,IE 需 polyfill。
错误传播: 取消的哀求会进入 .catch(),需明白区分取消和其他错误。
不可重复使用: 一个 AbortController 只能取消一次,如需多次取消需创建新实例。
二者对比
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|