我在其中一个页面上触发了2个Ajax请求,在向用户显示数据之前,我需要等待它们都加载。最好的管理方法是什么?
Ajax请求是从2个单独的类发送的,它们公开了MakeRequest(successCallback,failedCallback)方法,以确保您可以断言ajax完成时将调用相关的回调。
这些都在 Controller 内调用(使用 knockout js),这里是一个示例:
// 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();
});
最佳答案
我发现使用“递延”可以很好地解决这种问题。它们使您可以轻松定义应执行的操作的列表以及回调/回调列表。
我相信他们在jQuery 1.5中引入了jQuery deferred object
关于javascript - 等待多个ajax结果的良好模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6636518/