在我的网络应用程序上,用户可以生成一个CVS文件,有时可以获得相当大的10+ Mb。该报告显然可能需要一些时间来生成。我想在生成报告时为用户显示一个throbber,一旦提示他们保存/运行我希望throbber隐藏。这可能吗?
答案 0 :(得分:1)
不,实际上不可能检测到文件何时到达并且用户保存它。你只是更新你的悸动并且在他们准备好继续时提供继续链接时,你几乎感到困惑。
如果可以,那么下载站点会在您完成文件的目标网页时使用它自动转发到下载列表。
答案 1 :(得分:0)
是的,通常JavaScript中的繁重操作被拆分为块,然后从setInterval调用。超时会使页面冻结。
var csvTxt = "";
var isDone = false;
addPart = function(){
csvTxt += addTextFromLongCalculation();
if(csvTxt > 10000000) isDone = true; // this is an arbitrary example
}
var handle = setInterval(function(){
addPart();
if(isDone){
clearInterval(handle);
}
}, 20);
答案 2 :(得分:0)
我猜你正在发布一些数据,在服务器上生成CSV,设置内容类型并等待浏览器的保存对话框出现。正确的吗?
在那种情况下,我认为你会失望的。我花了很多时间试图找到会触发这个确切场景的事件,我无法弄明白。我最后不得不做一些令人费解的事情,比如使用XHR来轮询文件创建的状态。一旦我得到了我想要的回复,我就把这个笨蛋隐藏起来并请求了CSV。
更清楚: