多个异步AJAX调用的最佳实践

6
我有一个关于在单个页面上进行多个AJAX调用的“最佳实践”的问题。
我需要异步地进行5个隔离调用。我知道$.ajax本质上是异步的,但我想知道是否有更“清晰”或“更好”的方法来进行多个AJAX调用。
下面是包含多个AJAX调用的示例:
$(function() {
  $.ajax({
    type: "GET",
    url: "https://api.github.com/users/ralvarenga",
    dataType: "json",
    success: function(data) { console.log(data); }
  });
  $.ajax({
    type: "GET",
    url: "https://api.github.com/users/dkang",
    dataType: "json",
    success: function(data) { console.log(data); }
  });
});

感谢您的帮助!在此提前表示感谢。
1个回答

7
你应该使用$.when()
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function (a1, a2) {
    //all AJAX requests are finished
});

或者:

$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) )
    .then( successFunction, failureFunction );

所以我让when和then方法起作用了。虽然它的行为不像我想象的那样。看一下这个fiddle并检查控制台中的响应。http://jsfiddle.net/8us9t/2/ ...为什么单个请求只返回数据,而多个请求返回一个带有大量其他内容的较大对象。任何建议都将不胜感激! - richie
你所提出的方案是在两个ajax调用都成功时运行donethen函数,但我认为这不是OP所要求的。每个调用可以独立地成功或失败(例如同时加载新闻和产品列表)。只有在必须在两个调用成功后才能继续时才应使用此解决方案。 - AaA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接