在频繁请求同一个接口的时候,axios如何终止上一个请求

1.问题描述

在频繁请求同一个接口的时候,需要在执行当前请求时终止上一个请求,避免上一个请求因为网络或者其他原因导致在当前请求执行完之后才请求完成,就会导致页面会展示出上一次请求的内容

2.解决办法

axios 提供了取消请求的功能,通过 AbortController 和 AbortSignal API 来实现这一点。

  • AbortController 是一个允许你取消由 AbortSignal 实例控制的请求的类。
  • AbortSignal 是一个信号对象,可以被 AbortController 控制,并可以用来通知某个操作应该被取消。

引用axios

import axios from 'axios';

代码中使用

const fetchData = () => {
      // 创建一个AbortController实例
      controller.value = new AbortController();
      // 获取AbortSignal
      const signal = controller.value.signal;

      // 发起请求
      axios.get('https://api.example.com/data', { signal })
        .then(response => {
          this.data = response.data;
        })
        .catch(error => {
          if (error.name !== 'CanceledError') {
            console.error('Request failed:', error);
          }
        });
    },
const cancelRequests = () => {
      // 取消所有请求
      if (controller.value) {
        controller.value.abort(); // 触发AbortSignal
        controller.value = null; // 清除控制器引用
      }
    }

效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值