记一次vue取消单个/批量全部接口请求

本文介绍如何在Vue应用中使用axios进行文件上传,并利用axios.CancelToken实现安全退出时的上传请求取消。通过创建CancelToken源、存储令牌并在离开页面时取消上传,确保用户操作的原子性。
摘要由CSDN通过智能技术生成

上传文件的安全退出处理

在处理上传文件时,确保在用户离开页面或关闭页面时,取消未完成的上传请求是非常重要的。以下是一个在 Vue 中使用 axios 进行文件上传的示例,并实现了安全退出时取消上传请求的方法。

首先,我们在统一存放 API 接口的 JavaScript 文件中定义了上传文件的 API:

// 上传文件的 API
export const upload = (data, config) =>
  request.post(`${serveName}/common/file/upload`, data, config);

在 Vue 组件中,我们可以这样使用该上传 API:

import { upload } from "@/api/upload/uploadAndDownload";
import axios from "axios";

export default {
  data() {
    return {
      uploadSources: [] // 用于存储 CancelToken 实例
    };
  },
  methods: {
    async uploadFile(formData) {
      const source = axios.CancelToken.source();
      this.uploadSources.push(source);
      const response = await upload(formData, {
        cancelToken: source.token
      });
      // 处理上传完成后的逻辑
      if (response.code === "00000") {
        // 处理上传成功的情况
      }
    },
    // 取消单个上传请求
    cancelTheUpload(index) {
      if (index >= 0 && index < this.uploadSources.length) {
        this.uploadSources[index].cancel("上传被取消");
        this.uploadSources.splice(index, 1); // 取消后从数组中移除取消令牌
      }
    },
    // 取消所有上传请求
    cancelAllUploads() {
      this.uploadSources.forEach(source => {
        source.cancel("上传被取消");
      });
      this.uploadSources = []; // 清空上传请求数组
    }
  }
};

在这个示例中,我们使用了 axios.CancelToken 来创建一个取消令牌,以确保在需要时可以取消上传请求。在 uploadFile 方法中,我们为每个上传请求创建一个新的取消令牌,并将其存储在 uploadSources 数组中。在 cancelTheUpload 方法中,我们可以取消单个上传请求,并从数组中移除相应的取消令牌。在 cancelAllUploads 方法中,我们可以取消所有的上传请求,并清空 uploadSources 数组。

这样,当用户离开页面或关闭页面时,我们可以调用 cancelAllUploads 方法来确保取消所有未完成的上传请求,以避免文件继续上传到服务器。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值