vue终止已发送的axios请求

项目中碰到了一种情况:同一界面中,数据信息比较复杂或者比较大,网络请求比较慢,并且还需要多种数据可以切换显示,如果我们在上一个数据未请求完成时便切换到下一个数据显示,则可能会造成界面上的数据显示错误,这时,我们就需要在请求下一数据之前将上一个请求任务终止掉;
方式一:

const CancelToken = axios.CancelToken;
const source = CancelToken.source();
// get请求
axios.get('/user/12345', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // handle error
  }
});
// post请求
axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');

方式二:

const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
  cancelToken: new CancelToken(function executor(c) {
    // An executor function receives a cancel function as a parameter
   	cancel = c;
  })
});

// cancel the request
cancel();

我用的是第二种方式,由于我是把axios的请求提取到单独的js文件中,所以使用let定义cancelexport后,在其他vue页面调用cancel,一直是初始值,并没有调用到被赋值后的cancel,所以我使用window.cancel进行定义,最终才能成功终止之前的axios请求。

参考地址:https://github.com/axios/axios#cancellation

Vue3中发送Axios请求的步骤如下: 1. 首先,确保你已经在项目中安装了Axios库。你可以使用以下命令在你的Vue项目中安装Axios: ``` yarn add axios ``` 2. 在需要发送Axios请求的组件中,你可以通过导入Axios来使用它。在组件顶部添加以下代码: ```javascript import axios from 'axios'; ``` 3. 接下来,你可以使用Axios发送请求。你可以在Vue的生命周期钩子函数(例如created)或者其他需要发送请求的方法中使用Axios。例如,发送一个GET请求可以这样写: ```javascript axios.get('http://example.com/api/data') .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }); ``` 4. 你也可以发送其他类型的请求,比如POST、PUT、DELETE等。只需将请求方法替换为对应的方法即可。例如,发送一个POST请求可以这样写: ```javascript axios.post('http://example.com/api/data', { data: 'example' }) .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }); ``` 5. 你还可以在请求中使用其他的配置选项,比如设置请求头、发送请求时携带cookie等。具体的配置选项可以参考Axios的官方文档。 总结起来,使用Vue3发送Axios请求的步骤包括安装Axios库、导入Axios、使用Axios发送请求以及处理响应和错误。通过这些步骤,你可以在Vue3项目中方便地发送和处理Axios请求。 : 官方文档,<https://axios-http.com/docs/intro>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值