IE 8中的轮询和javascript偶尔工作

时间:2013-11-22 22:25:12

标签: javascript asp.net long-polling polling

我有一个逐行读取文件的asp.net页面。处理每一行并将其添加到db或丢弃。完成此操作后,我将添加到计数器,因此我知道处理的行数,然后将HttpContext.Current.Cache [“TotalRecords”]设置为等于计数器。 在我的ASP页面中,我有一个名为GetLatestCount的页面方法(见下文)。

[System.Web.Services.WebMethod]        
public static int GetLatestCount()
{
    int dt=0;
    try
    {
        dt = (int)HttpContext.Current.Cache["TotalRecs"];                
    }
    catch (Exception ex)
    {
       console.log();
    }
    return (dt);
}

在我的客户端脚本中,我使用Javascript轮询该PageMethod。不是AJAX或JQUERY。

<script language="javascript" type="text/javascript">
   function Check() 
   {
       // Call the static page method.
       try
       {
            PageMethods.GetLatestCount(OnSucceeded, OnFailed);
       }
        catch (ex)
       {
            console.log();
       }
   }

   function OnSucceeded(result, userContext, methodName) 
   {
       try
       {
           // Parse the page method's result and the embedded
           // hidden value to integers for comparison.
           var TotalRecs = parseInt(result);
           if (TotalRecs == 999999) 
           {
               lblTotalRecs.innerHTML = "";
           }
           else 
           {

               lblTotalRecs.innerHTML = "Processing Record:  " + TotalRecs;

                setTimeout("Check()", 500);
           }
       }
       catch(ex)
       {

       }
   }

function OnFailed(error, userContext, methodName) 
{
    alert(error); 
}

我正在阅读的文件有4000多行,因此需要一段时间才能处理。两次javascript轮询进程似乎没有再次触发,直到处理了一半文件(读取2065行)或最多30秒。但即便如此也是零星的。有时读3000行或读1000行。之后,它按照我想象的方式工作,并跟踪文件的进度。关于为什么它只获取文件的最后部分而不是第一部分的任何想法?如何在流程开始时使其工作?

0 个答案:

没有答案