2015-02-08 34 views
-1

以下代碼依次運行,一個接一個。我希望事情能夠平行運行。我需要改變什麼?幾個Ajax請求,所有代碼依次運行

window.onload = function() { 

    $.ajax({ 
     type: "GET", 
     url: "/Reports/GetTotalVisits" 
    }).done(function (data) { 
     $('#visitCount').text(data.visitCount); 
    }); 

    $.ajax({ 
     type: "GET", 
     url: "/Reports/GetTotalUsers", 
     async: true 
    }).done(function (data) { 
     $('#userCount').text(data.userCount); 
    }); 

    $.ajax({ 
     type: "GET", 
     url: "/Reports/VisitReport", 
     async: true 
    }).done(function (data) { 
     var ctx2 = document.getElementById("station-chart").getContext("2d"); 
     var myLineChart = new Chart(ctx2).Line(data); 
    }); 

}; 
+0

你確定它確實嗎?我認爲只有在請求完成時才調用'done'回調函數。 - 無論如何,你到目前爲止試圖改變什麼?有幾種方法可以做你想做的事情;使它平行運行的具體問題是什麼? – Jeroen 2015-02-08 12:19:08

回答

0

下面的代碼順序地運行時,一個接一個。我想的東西並行運行...

我假定你的意思是你想的HTTP調用重疊,例如,開始時第一個運行,而不是在等待第二個,並啓動第三,而前兩個正在運行而不是等待。

如果是這樣,那麼客戶端代碼是好的。那些ajax請求依次啓動,但會並行運行。如果你看到它們只發生在一系列情況下,請查看等式的服務器端。某些服務器技術會序列化來自同一客戶端的請求,特別是在使用「會話」或類似的情況下。但客戶端代碼很好(並且從不需要async: true,這是默認設置)。