jquery $ .when和同时发出请求

时间:2015-10-21 04:43:06

标签: jquery simultaneous

我写了第一个$ .when例程,但没有按预期工作:

     $(document).ready(function () 
     {
      var   UserUrl = 'API/StartGetUser.asp';
      var   StoreUrl = 'API/StartGetStore.asp';
      var   FeedbackUrl='API/StartGetFeed.asp';
      var   ItemsUrl='API/StartGetSellers.asp';
    $.when(
        $.get(UserDetailsUrl),
        $.get(StoreCategoryUrl),
        $.get(FeedbackUrl),
        $.get(ItemsUrl)
    ).then(function(user,store,feed,items) {
        //$.get(mailUrl)
        alert(user+' '+store+' '+feed+' '+items);
    }).fail(function(err) {
      alert(err);
    });

它有效,但我期待4次获得同时被解雇,而我发现在前一次完成之后执行了... 既然是

  

$。获得

肯定是异步..

什么可能是错的? 我该怎么检查?

顺便说一句,serverside是经典的asp和请求在同一台机器上,可以从url看到。

感谢任何提示

1 个答案:

答案 0 :(得分:4)

这四个请求是一个接一个地启动的,因为Javascript按顺序执行代码。在Javascript中没有实际的并行执行(它是单线程的 - 除了这里没有涉及的webWorkers)。

这里会发生的是,所有四个请求都将是"正在进行中"同时。确切地说,响应的回复取决于服务器的响应性。有些服务器一次只能处理一个请求,并且会使响应按顺序返回,即使它们都是一次启动的。其他服务器将以时间切片的方式处理它们(甚至使用多个处理器),以便所有响应在大约相同的时间完成。

您可以在操作之前打开Chrome调试器中的网络标签,然后查看其显示的时间跟踪,来验证发送请求的时间和接收响应。