等待多个ajax结果的好模式?

时间:2011-07-09 18:05:33

标签: javascript jquery ajax

我的一个页面上有2个ajax请求被触发,我需要在向用户显示数据之前等待它们加载。管理这个的最佳方法是什么?

ajax请求是从2个单独的类发出的,它们公开了一个MakeRequest(successCallback,failedCallback)方法,因为我确信你可以告诉你在ajax完成时调用相关的回调。

这些都是在控制器中调用的(使用knockoutjs),这是一个例子:

// Some JS File
function SomeController(ajaxService1, ajaxService2) {

    this.model = ...

    this.bothAjaxRequestsComplete = function() {
        ... Do something on view
    };

    this.invokeFirstAjax = function() {
        ajaxService1.MakeRequest(firstAjaxSuccess, firstAjaxFailed);
    };

    this.invokeSecondAjax = function() {
        ajaxService2.MakeRequest(secondAjaxSuccess, secondAjaxFailed);
    };

    var firstAjaxSuccess = function(data) {
        ... Do something on model
    };

    var secondAjaxSuccess = function(data) {
        ... Do something on model
    };

    var firstAjaxFailed = function(...) {...}
    var secondAjaxFailed = function(...) {...}
}

var someController = new SomeController();
$(document).ready(function(){
    someController.invokeFirstAjax();
    someController.invokeSecondAjax();
});

1 个答案:

答案 0 :(得分:3)

我发现使用“延期”非常适合这种东西。它们允许您轻松定义应执行的操作列表以及回调/回调列表。

我相信他们在jQuery 1.5中引入了jQuery deferred object