我的一个页面上有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();
});
答案 0 :(得分:3)
我发现使用“延期”非常适合这种东西。它们允许您轻松定义应执行的操作列表以及回调/回调列表。
我相信他们在jQuery 1.5中引入了jQuery deferred object