首页 > 其他分享 >axios取消请求

axios取消请求

时间:2022-10-14 11:00:59浏览次数:60  
标签:axios const 请求 取消 source token cancel CancelToken

AbortController

从 v0.22.0 开始,Axios 支持以 fetch API 方式—— AbortController 取消请求:

const controller = new AbortController();

axios.get('/foo/bar', {
   signal: controller.signal
}).then(function(response) {
   //...
});
// 取消请求
controller.abort()

CancelToken deprecated

您还可以使用 cancel token 取消一个请求。

Axios 的 cancel token API 是基于被撤销 cancelable promises proposal

此 API 从 v0.22.0 开始已被弃用,不应在新项目中使用。

可以使用 CancelToken.source 工厂方法创建一个 cancel token ,如下所示:

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // 处理错误
  }
});

axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// 取消请求(message 参数是可选的)
source.cancel('Operation canceled by the user.');

也可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建一个 cancel token:

const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
  cancelToken: new CancelToken(function executor(c) {
    // executor 函数接收一个 cancel 函数作为参数
    cancel = c;
  })
});

// 取消请求
cancel();

注意: 可以使用同一个 cancel token 或 signal 取消多个请求。

在过渡期间,您可以使用这两种取消 API,即使是针对同一个请求:

const controller = new AbortController();

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token,
  signal: controller.signal
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // 处理错误
  }
});

axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// 取消请求 (message 参数是可选的)
source.cancel('Operation canceled by the user.');
// 或
controller.abort(); // 不支持 message 参数

 

出处:https://www.axios-http.cn/docs/cancellation

标签:axios,const,请求,取消,source,token,cancel,CancelToken
From: https://www.cnblogs.com/mengff/p/16790916.html

相关文章

  • vue封装自己的axios
    在项目中封装自己的axios在src目录下建立一个unit文件夹//unit=>http.jsimportaxiosfrom"axios";consthttp=axios.create({baseURL:"xxxx",......
  • vue实现功能 单选 取消单选 全选 取消全选
    vue实现功能单选取消单选全选取消全选代码部分<template><divclass=""><h1>全选框</h1><center><button@click="checkAnti">反选</button>......
  • 几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!
    在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻.击的情况,下面的教程,通过​​intercept​​和​​redis​​针对​​url+ip......
  • axios怎么取消请求
    我们都清楚在XMLHttpRequest对象中可以通过letxhr=newXMLHttpRequest();xhr.open('GETorPOST',url);xhr.send();//取消请求使用xhr.abort()在axios客户......
  • RestTempalte用法:使用restTemlplate实现发送http请求
    前言最近在项目中遇到了需要发请求给指定接口获取数据的需求,翻了下项目中的代码,发现这类功能都是基于RestTemplate实现的,也有对RestTemplate进行进一步的封装,简化使用的,五......
  • http请求方式-OkHttpClient
    http请求方式-OkHttpClientimportcom.example.core.mydemo.http.OrderReqVO;importokhttp3.*;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importor......
  • http请求方式-RestTemplate
    http请求方式-RestTemplateimportcom.alibaba.fastjson.JSON;importcom.example.core.mydemo.http.OrderReqVO;importorg.springframework.http.HttpEntity;import......
  • http请求方式-CloseableHttpClient
    http请求方式-CloseableHttpClientimportcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.example.core.mydemo.http.OrderReqVO;imp......
  • http请求方式-HttpClient
    http请求方式-HttpClientimportcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.example.core.mydemo.http.OrderReqVO;importorg.a......
  • http请求方式-HttpURLConnection
    http请求方式-HttpURLConnectionimportcom.alibaba.fastjson.JSON;importcom.example.core.mydemo.http.OrderReqVO;importorg.springframework.lang.Nullable;im......