vue项目导出excel ,文件过大导致请求超时的处理方法

一、因为文件过大,请求时间较长,就会产生请求超时的情况,处理方式是可以分为三个接口,接口1用来获取id值,接口2利用id值发起请求,询问是否准备好下载,如果没准备好,则没隔一秒再次发起请求询问是否准备好,直到准备好为止,清除定时器,使用接口3发起下载

function pollingFunctions(params) {let queryTimer;if (queryTimer) {clearInterval(queryTimer);}// 接口1-获取唯一标识codeexportGetId(params).then((res) => {if (res.uuid) {// 接口2-查询是否完成queryTimer = setInterval(function () {exportAsk({ uuid: res.uuid }).then((result) => {if (result) {// 成功if (result.current == result.total) {clearInterval(queryTimer);function peCallback(pe) {// 下载回调defaultPercent.value = Math.round((pe.event.loaded / pe.event.total) * 100);if (pe.event.loaded === pe.event.total) {showProgress.value = false;message.success({ content: '下载完成', key, duration: 3 });}}try {exportDownload({ uuid: res.uuid }, peCallback).then((res) => {// 接口3const fileName = '电子台账记录.xlsx';let bold = new Blob([res.data]);const newUrl = window.URL.createObjectURL(bold);const link = document.createElement('a');link.href = newUrl;link.setAttribute('download', fileName);document.body.appendChild(link);link.click();link.parentNode?.removeChild(link);});} catch (error) {message.warn('下载失败,请重试');}}} else {// 失败clearInterval(queryTimer);message.warn('下载失败,请重试');}});}, 1000);}});}
// 导出1-获取查询id
export const exportGetId = (params?: Object) =>defHttp.get({ url: '', params });
// 导出2-利用查询id发起请求,询问是否可以下载,不可以就等一秒在发起请求询问是否准备好
export const exportAsk = (params?: Object) =>defHttp.get({ url: '', params });
// 导出3-准备好之后再发起下载请求
export const exportDownload = (params?: Object, peCallback?: Function) => {return new Promise((resolve, reject) => {axios({method: 'get',url: 'd',headers: {},responseType: 'blob',params,onDownloadProgress: (pe) => {peCallback ? peCallback(pe) : '';},}).then((res) => {resolve(res);}).catch((err) => {console.warn(err);});});
};

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

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

相关文章

便携式森林消防灭火泵:森林安全的守护者

在自然环境中,森林是地球生态系统的重要组成部分,它们为我们提供氧气、净化空气、防止土壤侵蚀等重要功能。然而,当森林发生火灾时,它们也会成为我们的噩梦。火势蔓延迅速,难以控制,对森林和生态环境造成严…

HTML5 CSS3 提高

一,HTML5的新特性 这些新特性都有兼容性问题,基本是IE9以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。 1.1新增语义化标签 注意: 1这种语义化标签主要是针对搜索引擎的 2这些新标签在页面…

FL Studio 21 Mac汉化免费版 附安装教程

FL Studio 21 Mac是Mac系统中的一款水果音乐编辑软件,提供多种插件,包括采样器、合成器和效果器,可编辑不同风格的音乐作品,Pattern/Song双模式,可兼容第三方插件和音效包,为您的创意插上翅膀。FL Studio 2…

textbox跨线程写入

实现实例1 实现效果 跨线程实现 // 委托,用于定义在UI线程上执行的方法签名 //public delegate void SetTextCallback(string text);public void textBoxText(string text){// 检查调用线程是否是创建控件的线程 if (textBox1.InvokeRequired){// 如果不是&#…

Adobe illustrator CEP插件调试

1.创建插件CEP面板,可以参考:http://blog.nullice.com/%E6%8A%80%E6%9C%AF/CEP-%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/%E6%8A%80%E6%9C%AF-CEP-%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B-Adobe-CEP-%E6%89%A9%E5%B1%95%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8…

【数据结构】OJ面试题《设计循环队列》(题库+代码)

1.前言 本题需要结构体和数组的知识,记录每天的刷题,继续坚持! 2.OJ题目训练 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队…

Firefox Focus,一个 “专注“ 的浏览器

近期才开始使用 Firefox Focus,虽然使用频率其实并不高,基本上只有想到了才去用,但每次使用的体验都很不错。 Firefox Focus 这款浏览器大约在 2015 年首次发布,不同于一般版本的 Firefox,它主打“自动删除浏览记录”…

Window10安装ruby

最好的方法,使用rubyinstaller,即在Downloads。 这是官方推荐的安装方式 通常来说我们会下载64位的 下载完后执行下载的exe即可。在最后一步会提示让安装gem,选则安装即可。 然后就可以在控制台进行测试了。

黑马程序员——接口测试——day03——Postman断言、关联、参数化

目录: Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

亿道信息新品EM-T195轻薄型工业平板,隆重登场!

EM-T195是一款轻巧但坚固的平板电脑,仅 650克重、10.5mm毫米厚,即使没有额外的便携配件进行辅助,您也可以轻松将其长时间随身携带。耐用性外壳完全密封,防尘防潮;出色的坚固性和可靠性,使T195天生适合在苛刻…

强大的Docker入门知识

目录 一、Docker简介 1.1、Docker是 1.2、Docker通常会在以下情况下使用: 1.3、Docker和VMware区别 1.4、Docker 的优点 二、环境配置 2.1、代码操作 2.2、效果演示 2.3、配置镜像仓库 开始配置 三、基本命令 3.1、Docker基本命令 3.2、Docker镜像常用…

深入浅出-高性能低延迟消息传递框架-Disruptor

第1章:引言 大家好,我是小黑,咱们今天来聊一聊Disruptor框架,这是一个高性能的、低延迟的消息传递框架,特别适合用在日志记录、网关,异步事件处理这样的场景。Disruptor之所以强大,关键在于它的…

k8s部署java微服务程序时,关于配置conusl acl token的方法总结

一、背景 java微服务程序使用consul作为服务注册中心,而consul集群本身的访问是需要acl token的,以增强服务调用的安全性。 本文试着总结下,有哪些方法可以配置consul acl token,便于你根据具体的情况选择。 个人认为&#xff…

wu-framework-parent 项目明细

wu-framework-parent 介绍 springboot 版本3.2.1 wu-framework-parent 是一款由Java语言开发的框架,目标不写代码但是却能完成功能。 框架涵盖无赖ORM( wu-database-lazy-starter)、仿生组件 、easy框架系列【Easy-Excel、easy-listener、easy-upsert】 授权框架(…

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载3D model 最简实例(十三)

文章目录 前言一、3D model 文件介绍1. 3d model 介绍1.1 如何获取3d model 文件1.2 3d model 的文件格式1.3 obj模型数据格式2. 3d 立方体 model 实例——cube.obj二、Assimp 介绍1. Assimp 简介2.ubuntu 上安装libassimp3. 使用Assimp 解析 cube.obj 文件3.1 assimp_load_cub…

【机器人最短路径规划问题(栅格地图)】基于遗传算法求解

基于遗传算法求解机器人最短路径规划问题(栅格地图)的仿真结果 仿真结果: 路径长度的变化曲线: 遗传算法优化后的机器人避障路径:

华为ipv6 over ipv4 GRE隧道配置

思路: PC1访问PC2时,会先构造源ipv6为2001:1::2,目的IPV6为2001:2::2的ipv6报文,然后查看PC1的路由表,发送到R1,r1接收后,以目的IPV6地址2001:2::2查询IPV6路由表,出接口为tun0/0/0…

SpringMVC 学习(十)之异常处理

目录 1 异常处理介绍 2 通过 SimpleMappingExceptionResolver 实现 3 通过接口 HandlerExceptionResolver 实现 4 通过 ExceptionHandler 注解实现(推荐) 1 异常处理介绍 在 SpringMVC中,异常处理器(Exceptio…

CGI程序与ShellShock漏洞

CGI是什么? CGI(通用网关接口,Common Gateway Interface)程序是一种用于在Web服务器上执行动态内容的技术。与服务器上普通的后端代码相比,CGI程序有几个区别: 执行环境: CGI程序在服务器上作为…

处理异常(Exception)

1、什么是异常 在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数据库的数据&am…