AJAX调用WebService并行最大进程并中止

时间:2014-03-03 10:45:38

标签: asp.net ajax vb.net web-services asmx

我有两个关于AJAX和Asynch调用Web服务的问题。

1) 加载页面时,会向Web服务页面ASMX发出18个AJAX请求。您可以在下图中看到,在开始时只处理了6个请求,当其中一个请求完成时,另一个请求被接受。 enter image description here

如何增加同时接受治疗的最大数量?从6到18岁。

其中一个AJAX代码:

<script type="text/javascript">
        var myRetourboxUn;
        function RechercherInterventionboxUn()
        {
            myRetourboxUn = $.ajax({
                    type: "POST",
                    timeout: 30000,
                    cache: false,
                    url: "/TestAsynch/InterventionRecherche.asmx/HelloWorld",
                    data: ({}),
                    dataType: "text",
                    beforeSend: function(){
                        $("#tdboxUn").children(".divContenu").hide();
                        $("#tdboxUn").children(".divChargement").show();
                    }
            }).done(function(msg){
                $("#tdboxUn").children(".divContenu").show();
                $("#tdboxUn").children(".divChargement").hide();                        
                $("#tdboxUn").children(".divContenu").html("--" + msg);
            }).fail(function(jqXHR, textStatus, errorThrown){
                $("#tdboxUn").children(".divContenu").show();
                $("#tdboxUn").children(".divChargement").hide();  
                $("#tdboxUn").children(".divContenu").text(textStatus);
            });
            $(".menu").click(function(){
                myRetourboxUn .abort();
            });
        }
        $(function(){
            RechercherInterventionboxUn();
        });
        $(window).unload(function() {
            //myRetourboxUn .abort();
        });
</script>

Webservice代码:

<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class InterventionRecherche
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld() As String
        Dim aTemps As DateTime = DateTime.Now
        Dim aTest As Integer = 1
        Do While aTest < 100000000
            aTest += 1
        Loop
        Return (DateTime.Now - aTemps).ToString
    End Function

    <WebMethod()> _
    Public Function HelloWorld3() As String
        Dim aTemps As DateTime = DateTime.Now
        Dim aTest As Integer = 1
        Do While aTest < 100000000
            aTest += 1
        Loop
        Return (DateTime.Now - aTemps).ToString
    End Function

End Class

2)当我想刷新页面时,它会一直保持冻结状态,直到完成所有请求。卸载页面时如何判断不等待并自动中止请求?

显然,此行为特定于IE,因为在Chrome中,当您想要更改页面时不会出现任何问题。请求错误到达,然后立即重新加载页面

感谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了一个解决方案。 对于第一部分,Internet Explorer 8&amp; 9只授权与同一服务器的6个并发连接,与其他浏览器相同但可能以另一种方式,因为我的问题在Chrome上不存在... Max parallel http connections in a browser?

对于第二部分,只需几个代码就可以在您想要更改页面时中止每个调用:

$(window).bind('beforeunload', function(){
    myretourboxun.abort();
});