分享一个后端说异步导出,前端的实现方法

最近做项目遇到一个导出报表的功能,后端说是异步的,前端如何处理呢?话不多说直接上方案

在页面中做一个进度条弹窗

html 复制代码
<el-dialog : visivle.sync="showProgress" width="30%" :show-close="false" :close-on-click-modal="false">
    <p>正在导出,请稍后...</p>
    <el-progress :text-inside="true" :percentage="percentageVal" color="rgba(142,113,199,0.7)"></el-progress>
</el-dialog>

在导出按钮点击时,将showProress置为true,将percentageVal置为0,然后开始调用一个异步的后端接口,在接口内部传了个type类型表示是哪个报表,之后拿到res之后,res会给返回一个标识,或者是编号之类的,之后前端再调用一个函数来将这个编号传入,

_queryTask()函数主要功能是通过post请求查询任务进度,并根据返回的状态进行响应的处理

请求构建

serialno作为请求参数data中的serialno字段,

使用http的post方法请求/api/progress/XX接口,设置了超时时间为0并且传递了取消令牌this.source = this.http.Canceltoken.source()

返回处理

如果返回的code为'0',表示请求成功,进一步处理结果

let result = res.data.data

如果uploadStatus为'0',表示上传中,更新进度值percentageVal为uploadProgress,并使用setTimeout实现递归查询任务状态

如果uploadStatus为'1',表示上传成功,将进度值设为100,取消查询任务(this.source.cancel()),跳转到文件下载页面(window.location.href = `{filApi}/api/file/down/?id={id}&timestap=XX`),并显示成功消息

如果uploadStatus为'2',并且有uploadMessage,表示上传失败,取消查询任务,关闭进度条,显示失败信息

如果返回的code值不为'0',显示错误消息

相关推荐
IT_陈寒3 分钟前
React useEffect里面写异步,我的状态怎么老丢?
前端·人工智能·后端
AI视觉网奇20 分钟前
BambuStudio 自定义加载页面
服务器·前端·javascript
橙子家25 分钟前
Extension storage、Interest groups 和 Shared storage 简介-浏览器缓存之【隐私沙盒与扩展专用存储】
前端
漂流瓶jz1 小时前
理解Webpack插件机制:从插件使用、各类编译对象、Tapable到自定义插件与钩子开发
前端·javascript·webpack
梦帮科技11 小时前
GRAVIS v4.0:基于Web的极速套利架构设计与实时数据流实现
前端·人工智能·rust·自动化·区块链·智能合约·数字货币
爱勇宝12 小时前
办公资料反复修改、补传、交接混乱,我做了个桌面工具来解决这件事
前端·后端·程序员
微信开发api-视频号协议12 小时前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad
甲维斯12 小时前
Fable5:20美金的顶级设计师!
前端·人工智能
kyriewen13 小时前
我同时用了 Claude Code、Cursor 和 Codex,说说三个工具的真实差距——2026 年选错工具比不用 AI 更浪费时间
前端·ai编程·claude
Jackson__13 小时前
为了拯救我的腰椎和颈椎,我做了款浏览器插件!
前端·javascript·开源