0

我的解决方案中遇到了 js 异步回调的问题。这是请求;

  1. 用户单击“生成 Excel”按钮。
  2. 在服务器上生成包含大量数据的 excel 文件(大约需要 2 分钟)。
  3. 在此期间,用户可以在应用程序中进行其他操作,包括页面回发/请求/等。
  4. 当生成 excel 时,会弹出一个弹出窗口以从服务器下载文件,而不管用户所在的页面如何。

我做了什么 :

  • 创建了一个生成 excel 文件 wrt 业务需要的函数“ GenerateReport ”。(服务器端)
  • 编写了一个 WebMethod ' GetFilePath ',它递归地检查文件是否已由GenerateReport方法在某个服务器位置生成并返回新文件的文件路径,该方法根据业务逻辑不再返回相同的文件路径。(服务器端)
  • 创建了一个 javascript 函数DownloadLink() ,它以 60 秒的延迟递归调用GetFilePath方法。函数调用如下所示:

    PageMethods.GetFilePath(UserId, onSuccess, onError);

  • OnSuccess 和 OnError 是 JS 回调函数,当下载文件的 URL 可用时触发 OnSuccess,此 JS 方法显示下载弹出窗口,出现错误时调用 OnError。

工作正常,直到发生以下情况。 当从 GetFilePath 方法调用 OnSuccesss 并且同时发生一些其他操作的回发时,由于尚未加载新页面并且不会向用户显示下载弹出窗口,因此永远不会进行 OnSuccess 调用。

我应该怎么做才能解决这个问题,以确保用户获得下载链接。

4

1 回答 1

0

除了每 60 秒检查一次外,在最初加载页面时检查是否有准备好的下载链接。

于 2012-08-27T12:36:37.847 回答