vue+axios实现点击取消请求功能

news2024/11/25 4:54:38

在这里插入图片描述
在这里插入图片描述

代码片段

<template>
<el-button type="primary" @click="clickExportData">导出</el-button>

<el-dialog title="正在导出,请稍等" :visible.sync="progressShow" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" width="20%">
       <div style="text-align: center;">
           <el-progress :percentage="percentage" type="circle"></el-progress>
       </div>
       <div slot="footer">
           <el-button type="primary" @click="cancelSend">取消下载</el-button>
       </div>
   </el-dialog>
</template>
<script>
export default {
	data() {
        return {
            percentage:0, //进度条
            progressShow: false, // 是否显示进度条弹出层
            source: ''
        }
    },
    methods: {
		// 点击导出数据
        clickExportData(){
			this.progressShow = true;
            this.percentage = 0;
            let times = setInterval(() => {
                if(this.percentage == 89){
                    clearInterval(times);
                }else{
                    if(!this.percentage){
                        this.percentage = 0;
                    }
                    this.percentage++;
                }
            }, 2000);
            // 每次发送请求前先初始化CancelToken,防止在点击一次后失效的问题
            // this.$axios是在main.js中引入的axios:
            // import axios from "axios";
            // Vue.prototype.$http = axios
            const { CancelToken } = this.$axios; 
            this.source = CancelToken.source();
            this.$http.post(url, data, { cancelToken: this.source.token }).then(res => {			console.log('请求成功');
            }).catch(err => {
            	// 用户取消
                console.log(err);
                this.progressShow = false;
                if(err.message && err.message == '请求被用户取消'){
                    this.$message.error('请求已被取消!');
                }else{
                    this.$message.error('请求超时,导出数据失败!');
                }
            });
		},
		// 点击取消发送请求
        cancelSend(){
			this.source.cancel('请求被用户取消');
		}
	}
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/786259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql优化:为什么通常选用根据id查询而不是根据name?

先来看一个最常见的问题,下面两个sql语句哪个效率更高一些&#xff1f; select * from user where id 1; select * from user where name 张三 在没有给name加索引的时候&#xff0c;id是有主键索引的&#xff0c;也就是聚集索引&#xff0c;这样就是一个BTree结构&#xf…

成为一名数字IC后端工程师需要掌握哪些技能?(内附学习视频)

众所周知&#xff0c;数字后端设计是IC设计中必不可少的一个环节&#xff0c;数字后端工程师是将门级网表转换成标准的GDS文件&#xff0c;又称为设计实现或物理设计。正所谓前端保证功能正确&#xff0c;后端保证芯片的实现正确。 数字后端工程师是做什么的&#xff1f; 数字…

操作系统启动相关概念(BIOS、MBR、GPT、BRUB)

不管是 Windows 还是 Linux 操作系统&#xff0c;底层设备一般均为物理硬件&#xff0c;操作系统启动之前会对硬件进行检测&#xff0c;然后硬盘引导启动操作系统&#xff0c;如下为操作系统启动相关的各个概念。 一、BIOS 基本输入输出系统&#xff08;Basic Input Output Sy…

android studio(火烈鸟版本)使用protobuf

一、简介 Protobuf 全称&#xff1a;Protocol Buffers&#xff0c;是 Google 推出的一种与平台无关、语言无关、可扩展的轻便高效的序列化数据存储格式&#xff0c;类似于我们常用的 xml 和 json。 二、特点 Protobuf 用两个字总结&#xff1a;小&#xff0c;快。用 Protobu…

PS 裁剪工具及工具栏配置讲解

我们还是日常打开PS软件 首先 我们右侧菜单中右键 找到裁剪工具组 当我们选择裁剪工具时 图像边上会出现一个白色的框框 用法比较简单 我们可以鼠标拖住一个边 然后 往里拖动 将不要的东西剪掉 然后 鼠标双击 即可保存结果 然后 我这里撤回一下 这些部分还有用 还有一个…

安装nvm管理node

1.首先卸载已存在的node cmd输入node提示&#xff1a;‘node’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 2.安装nvm 安装地址 &#xff1a;Releases coreybutler/nvm-windows GitHub 本人选择1.1.7 输入nvm打印出了nvm的指令列表&#xff0c;说明…

【Nodejs】原生nodejs路由、获取参数、静态目录

1.路由 index.js // 启动服务 const server require(./server.js); //路由模块 const route require(./route.js); //api const apiRouter require(./api.js);server.use(route); server.use(apiRouter); server.start();server.js const http require(http);//创建一个大…

“解锁高效水资源管理:灌区管理系统一图详解“

平台概述 柳林灌区管理系统平台以物理灌区为单元、时空数据为底座、数学模型为核心、水利知识为驱动&#xff0c;对物理灌区全要素和建设运行全过程进行数字映射、智能模拟、前瞻预演&#xff0c;与物理灌区同步仿真运行、虚实交互、迭代优化&#xff0c;实现对物理灌区的实时…

ChatGPT和搜索引擎哪个更好用

目录 ChatGPT和搜索引擎的概念 ChatGPT和搜索引擎的作用 ChatGPT的作用 搜索引擎的作用 ChatGPT和搜索引擎哪个更好用 总结 ChatGPT和搜索引擎的概念 ChatGPT是一种基于对话的人工智能技术&#xff0c;而搜索引擎则是一种用于在互联网上查找和检索信息的工具。它们各自具…

脑电信号处理与特征提取——2.脑电的神经起源与测量(夏晓磊)

目录 二、脑电的神经起源与测量 2.1 脑电的神经起源 2.2 脑电的测量 二、脑电的神经起源与测量 2.1 脑电的神经起源 脑电起源于大脑皮层大量神经元的同步突触活动&#xff0c;主要贡献来自锥体细胞。 静息电位&#xff1a;内负外正&#xff0c;K内流。 动作电位&…

stm8s003_切换时钟流程分析、配置外部晶振(库函数调用)

1、stm8s003的时钟 复位后&#xff0c;默认使用内部高速时钟HSI&#xff08;16MHz&#xff09;的8分频&#xff0c;也就是2MHz. 代码开始运行&#xff0c;也就是运行到main函数&#xff0c;我们就可以修改时钟源为外部晶振。 2、切换时钟流程分析&#xff0c;参考官方应用手册…

联想拯救者Y9000X 2023 i9+32G+RTX4070,真香!

拯点新品&#xff01;i932GRTX4070,真香&#xff01; 联想拯救者Y9000X 2023搭载16英寸专业超竞屏&#xff0c;机身最薄处仅为17.6mm&#xff0c;轻盈即刻随行&#xff0c;让你开黑随时开始&#xff01; 高刷新率&#xff0c;高分辨率&#xff0c;广色域&#xff0c;高亮度。强…

如何有效跟踪你的计费时间?

对于自由职业者、小型企业和远程团队来说&#xff0c;时间跟踪是必需的。了解自己在单个项目或任务上投入了多少时间&#xff0c;可以帮助他们有效管理资源和优化工作流程。 然而&#xff0c;在向客户收费时&#xff0c;时间跟踪多了一层复杂性&#xff1a;不仅需要跟踪所花费…

【论文阅读】DEPIMPACT:反向传播系统依赖对攻击调查的影响(USENIX-2022)

Fang P, Gao P, Liu C, et al. Back-Propagating System Dependency Impact for Attack Investigation[C]//31st USENIX Security Symposium (USENIX Security 22). 2022: 2461-2478. 攻击调查、关键边、入口点 开源&#xff1a;GitHub - usenixsub/DepImpact 目录 1. 摘要2. 引…

re学习(23)BUUCTF 刮开有奖(中间变量的获取)

INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) {const char *v4; // esiconst char *v5; // ediint v7[2]; // [esp8h] [ebp-20030h] BYREF 虽然看名称不连续&#xff0c;但是通过看偏移地址&#xff0c;可知&#xff0c;这些变量在内存中是连续的&…

3.python设计模式【工厂模式】

1.简单工厂模式 内容&#xff1a;不直接向客户端暴露对象创建的实现细节&#xff0c;而是通过一个工厂类来负责创建产品的实例。角色&#xff1a; 工厂角色&#xff08;creator&#xff09;抽象产品角色&#xff08;product&#xff09;具体产品角色 UML图 &#xff1a; 举个例…

Go基础快速入门

目录 一、变量相关基础语法 1、变量的定义以及赋值 2、变量的交换 3、匿名变量 4、变量的作用域 二、常量 三、基本数据类型 1、常见数据类型 2、数据类型的转换 四、运算符 五、函数 函数高级用法 函数也是一个类型 函数也是一个变量&#xff0c;也可以赋值 高…

视频监控汇聚平台EasyCVR视频监控录像的3种方式介绍

视频监控综合管理平台EasyCVR可以实现海量资源的接入、汇聚、计算、存储、处理等&#xff0c;平台具备轻量化接入能力&#xff0c;可支持多协议方式接入&#xff0c;包括主流标准协议GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Eho…

STM32MP157驱动开发——按键驱动(tasklet)

文章目录 “tasklet”机制&#xff1a;内核函数定义 tasklet使能/ 禁止 tasklet调度 tasklet删除 tasklet tasklet软中断方式的按键驱动程序(stm32mp157)tasklet使用方法&#xff1a;button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “tasklet”机制&#xff1a; …

谁说dubbo接口只能Java调用,我用Python也能轻松稿定

由于公司使用基于Java语言的Dubbo技术栈&#xff0c;而本人对Python技术栈更为熟悉。为了使不懂JAVA代码的同学也能进行Dubbo接口层的测试&#xff0c;总结一个通过python实现dubbo接口调用的实现方案。 01、实现原理 根据Dubbo官方文档中提到的&#xff1a;dubbo可以通过tel…