0

我正在使用 John Culviner 的(很棒的)jquery.fileDownload 插件。它有下载完成时的回调,但我的文件需要大约 30 秒才能生成(大量后端处理)。

我想通知用户当前的进度。

作为原型,我正在尝试这个:

1) (在文件下载开始之前) - 每秒重复轮询一个 url ($.get(...))。它返回完成百分比并更新页面上的 div(此时为 0%)。

2) 启动 fileDownload 脚本(此时,1)正在检查的服务器端变量开始更新,例如 2% 完成.... 10% 完成....等等

3) 理想情况下,在构建文件时,我在 1) 中的 ajax 调用仍在同时轮询(并更新 div),以便用户开始看到一些进展。

4) 下载完成。此时我可以隐藏“进度 div”,因为它将显示 100%。

注意,当然,进度 div 最终将被进度条取代。

问题是,一旦 fileDownload 开始,1) 中的 ajax 调用就开始排队,直到 4) 之后才真正执行!

我认为 fileDownload 插件使用了一个 iframe,我认为它会阻止我主页中的 ajax 调用,但它似乎是这样。

希望这是有道理的。感谢您提供有关如何处理此问题的任何建议。

4

1 回答 1

0

我在使用 ASP.NET MVC Web 应用程序时遇到了同样的问题。就我而言,问题与服务器有关,因为使用同一会话的两个请求不能同时运行。会话在 ASP.NET 中不是线程安全的。

[SessionState(SessionStateBehavior.ReadOnly)]MVC 项目的解决方案是用属性来装饰控制器。要在两个操作之间共享变量,请使用线程安全Cache而不是会话。

于 2013-07-11T09:27:42.697 回答