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.hqwc.cn/news/504849.html

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

相关文章

Java基于SpringBoot的企业客户管理系统的设计与实现论文

摘 要 本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企业客户管理系统的当前背景以及系统开发的…

【DDD】学习笔记-聚合和聚合根:怎样设计聚合?

今天我们来学习聚合(Aggregate)和聚合根(AggregateRoot)。 我们先回顾下上一讲,在事件风暴中,我们会根据一些业务操作和行为找出实体(Entity)或值对象(ValueObject&…

【SpringBoot】mybaitsPlus的多数据源配置

📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 mybatisPlus的多数据源配置 适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等 目前我们就来模拟一个纯粹多…

(二十)devops持续集成开发——使用jenkins的docker插件完成docker项目的流水线发布

前言 本节内容主要介绍jenkins如何集成docker插件,完成docker项目的流水线发布,在前面的章节中我们也介绍过docker项目的发布,可直接通过shell命令调用本地的docker服务完成docker项目的发布,本节内容我们使用docker插件来完成do…

亿道信息轻工业三防EM-T195,零售、制造、仓储一网打尽

厚度仅10.5mm,重量仅0.65千克的EM-T195,其紧凑而纤薄的设计为以往加固型平板带来了全新的轻薄概念。尽管设计时尚、轻薄,但经过军用认证的强固性仍然能够承受所有具有挑战性的环境条件。随身携带无负担的轻便性加上抗震功能使其成为餐厅、酒店…

最新 Rider 2023.3 下载安装

文章目录 RiderRider是什么功能Rider 中的 Al AssistantRider 的多面性Rider 最新变化dotUltimate 下载安装Stage 1 : 官网下载常见问题部分小伙伴 Mac 系统执行脚本遇到如下错误:解决方法: Rider Rider是什么 功能 查看更多功能 Rider 中的 Al Assist…

计算机视觉基础知识(十六)--图像识别

图像识别 信息时代的一门重要技术;目的是让计算机代替人类处理大量的物理信息;随着计算机技术的发展,人类对图像识别技术的认识越来越深刻;图像识别技术利用计算机对图像进行处理\分析\理解,识别不同模式的目标和对象;过程分为信息的获取\预处理\特征抽取和选择\分类器设计\分…

aspose转pdf乱码问题

1 问题描述 在centos服务器使用aspose.word转换word文件为pdf的时候显示中文乱码,但是在win服务器上使用可以正常转换。 2 问题原因 通过查资料分析后确认是由于linux服务器缺少对应的字库导致文件转换出现乱码的。 3 解决方案1:环境解决 安装字库,将…

降低85%的gc发生率:ES的GC调优实践!

#大数据/ES #经验 #性能 ES的服务日志出现一些gc overhead现象,经过调优对比,gc发生率显著下降了85%,分享参数如下: ES的G1GC参数(多实例) -XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:InitiatingHeapOccu…

51单片机-(定时/计数器)

51单片机-(定时/计数器) 了解CPU时序、特殊功能寄存器和定时/计数器工作原理,以定时器0实现每次间隔一秒亮灯一秒的实验为例理解定时/计数器的编程实现。 1.CPU时序 1.1.四个周期 振荡周期:为单片机提供定时信号的振荡源的周期…

NFT Insider #121:苏富比去年 NFT 和数字艺术品销售额超过 3000 万美元,较 2022 年增长 50%

引言:NFT Insider由NFT收藏组织WHALE Members (https://twitter.com/WHALEMembers)、BeepCrypto (https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜…

【论文笔记】Mamba:挑战Transformer地位的新架构

Mamba Mamba: Linear-Time Sequence Modeling with Selective State Spaces Mamba Mamba摘要背景存在的问题本文的做法实验结果 文章内容Transformer的缺点Structured state space sequence models (SSMs)介绍本文的工作模型介绍State Space ModelsSelective State Space Mod…