夜雨聆风学习资料网

ARTICLE · 1343907

上传一个 Excel,拆成 N 张表:怎么让进度

上传一个 Excel,拆成 N 张表:怎么让进度

上传一个 Excel,拆成 N 张表:怎么让进度

一个后台任务跑几分钟,进度条到底该听谁的?我踩了一圈坑才明白:前端只管画,真相得服务端给。

以前写这种需求,业务代码半天写完。麻烦全在用户等的那几分钟里——按钮没锁住,重复上传互相覆盖;全程就一句"处理中",最耗时的前置阶段根本没提示;切个标签页、刷新一下,进度和结果全没了。

这三个 UI bug,其实是同一个病:任务状态跟着请求走,没独立出来。

解法是把接单和干活拆开。上传接口只存文件、生成 task_id、起个独立进程,立刻返回 202。真正干活放进独立进程,进度写到每个任务一份的状态文件里,前端拿着 task_id 轮询就行。

还有个大坑:完成不能靠 done >= total 猜。契约里必须有显式的终态——success、error、interrupted。只有进了终态,才准解锁上传区、出下载按钮。phase 和 done/total 也得拆开,phase 是一句人话,任何时候都得有值。这样哪怕总数还不知道,也能告诉用户"正在解析文件"。

这套方案实测上传接口 6.3 毫秒就返回了,旧客户端重传直接被 409 挡掉。热重载一次,任务照样跑到成功。

说白了,进度条不是画出来的,是约出来的。

原文上传一个 Excel,拆成 N 张表:怎么让进度条不骗人
上海,3小时前,

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料