2013-02-09 52 views
2

我已經創建了webMethod在頁面上,那些方法將在客戶端用$ .ajax()調用。第一個Webmethod正在處理耗時的任務。任務需要超過8分鐘才能完成。在對第一個方法進行ajax調用之後,立即調用另一個Web方法,該方法在一秒或兩秒鐘內完成。因此,我應該立即從第二個WebMethod ajax調用中獲得響應。但在這裏,在這種情況下,第二個Web方法不會執行直到第一個呼叫完成。以下示例模擬我的場景。多個Ajax調用不是異步工作

[WebMethod] 
public static string PullData(int snapshotId) 
{ 
    string str = "Pull Started: " + DateTime.Now.ToString() + "\n"; 
    Thread.Sleep(30000); 
    str += "Pull End: " + DateTime.Now.ToString(); 
    return new JavaScriptSerializer().Serialize(str); 
} 

[WebMethod] 
public static string CheckStatus(int snapshotId) 
{ 
    return new JavaScriptSerializer().Serialize("Check Status" + DateTime.Now.ToString()); 
} 

以下是Javascript調用按鈕單擊。

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

    <script language="javascript" type="text/javascript"> 

     function pullData(){ 

      $.ajax({ type: 'POST', 
       url: 'Default.aspx/PullData', 
       data: '{ snapshotId: 101 }', 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       success: function (msg) { 
        var curMsg = $("#message").attr("innerHTML") + "<br />"; 
        $("#message").attr("innerHTML", curMsg + msg.d); 
       }, 
       error: function (jqXHR, textStatus, errorThrown) { 
        alert(jqXHR.responseText); 
       } 
      }); 

      CheckStatus(); 
      return false; 
     } 


     function CheckStatus() { 
      //alert("this is check status"); 
      $.ajax({ type: 'POST', 
       url: 'Default.aspx/CheckStatus', 
       data: '{ snapshotId: 101 }', 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       success: function (msg) { 
        var curMsg = $("#message").attr("innerHTML") + "<br />"; 
        $("#message").attr("innerHTML", curMsg + msg.d); 
       }, 
       error: function (jqXHR, textStatus, errorThrown) { 
        alert(jqXHR.responseText); 
       } 
      }); 

      return false; 
     } 

    </script> 

在這上面的電話的checkStatus方法應該返回響應,前PullData方法返回的響應。但CheckStatus執行後PullData完成其工作。

我可能會在這裏失蹤或不知道完整的行爲。請幫忙!!!

有沒有人遇到過這個問題?

回答

2

我發現不能同時執行多個AJAX請求。但是,請求是異步的,但是這些請求都在Queue中。直到第一個請求完成任何狀態成功/失敗下一個請求不會到服務器。最終,我們已經同時執行了多個請求,但直到以前完成纔會進入服務器。