ページに複数のajax呼び出しがあります。簡潔にするために、それらをA、B、Cと呼びましょう。「A」はサーバーからデータを取得するのに2分ほどかかります(2分で大丈夫です)。一方、「B」と「C」の応答時間はミリ秒単位です。
何らかの理由で、AJAX呼び出しは「A」の後にキューに入れられています。IE 9は、同じドメインに対して同時に6つの要求接続を持つことができます。以下のスクリーンショットで同時接続を確認できます。
「A」は2分かかり、「A」が完了するまで「B」と「C」は保留状態になります。
「ajax_threads.js」http://cmarshall.net/MySoftware/ajax/Threads/を見つけましたが、これが役立つかどうかはわかりません。私が「ajax_threads.js」を理解した方法は、それが複数の接続を提供するだけであり、その機能はすでにmodrenブラウザーにあるということです。IE7には2つの接続がありました。
これがJavascriptです:
$(function () { $.ajax({
type: "POST",
url: "Service1.svc/GetDate",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result1").text(msg.d);
}
});
$.ajax({
type: "POST",
url: "Service1.svc/GetDate2",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result2").text(msg.d);
}
}); });
HTML:
<input type="button" id="Button1" value="1"/><div id="Result1"></div>
<br/><input type="button" id="Button2" value="2"/><div id="Result2"></div>
サーバーコード:(Ajax対応のWCF)
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
[OperationContract]
public string GetDate()
{
System.Threading.Thread.Sleep(8000);
return DateTime.Now.ToString();
}
[OperationContract]
public string GetDate2()
{
System.Threading.Thread.Sleep(1000);
return DateTime.Now.ToString();
}
}