当页面同时回发时,异步回调失败

时间:2012-08-27 12:30:36

标签: .net asynchronous postback webmethod pagemethods

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

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

    • 创建了一个生成excel文件的函数w.r.t业务需要' GenerateReport '。 (服务器端)
    • 写了一个WebMethod' GetFilePath ',它递归检查文件是否是由某个服务器位置上的 GenerateReport 方法生成的,并返回新文件的文件路径,这个方法永远不会根据业务逻辑再次返回相同的文件路径。 (服务器端)
    • 创建了一个javascript函数 DownloadLink(),以递归方式调用 GetFilePath 方法,延迟时间为60秒。函数调用如下所示:

      PageMethods.GetFilePath(UserId,onSuccess,onError);

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

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

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

1 个答案:

答案 0 :(得分:0)

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