是否有设计模式来管理并行AJAX查询?

jul*_*ien 3 javascript ajax http

我正在开发一个Web应用程序,从几个Web服务中检索数据(假设只有两个简化).必须从一个服务检索的内容不依赖于从另一个服务检索到的内容,因此我可以并行启动AJAX请求.然后,我需要在两个查询都返回其数据后执行某些操作.由于它似乎是非常平常的事情,我想知道是否有一个良好的形式化和公认的设计模式来做到这一点.到目前为止我在做什么(使用jquery):

var data1 = null;
var data2 = null;

$.ajax({
    url : url1,
    success: function(data) {
        data1 = data;
        if(data2) perform();
    },
});

$.ajax({
    url : url2,
    success: function(data) {
        data2 = data;
        if(data1) perform();
    },
});

function perform() {
    //do interesting stuff on data1 and data2
}
Run Code Online (Sandbox Code Playgroud)

你也喜欢这样吗?

Pra*_*ana 6

你可以这样做

检查:jQuery:api.jquery.com/jquery.when

我们可以使用jQuery的$.when()方法,它接受这些"Deferred"对象的列表(所有jQuery Ajax方法返回Deferred对象)然后提供单个回调.

句法

$.when(

  // Deferred object (probably Ajax request),

  // Deferred object (probably Ajax request),

  // Deferred object (probably Ajax request)

).then(function() {

  // All have been resolved (or rejected), do your thing

});
Run Code Online (Sandbox Code Playgroud)

示例:

$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  .then(myFunc, myFailure);
Run Code Online (Sandbox Code Playgroud)