当一些函数有几个ajax调用时,按顺序执行几个js函数

时间:2013-04-21 07:58:13

标签: javascript jquery ajax deferred

我正在尝试创建一组function(如下面的App对象),它接受preInit,Init,Load函数并按顺序执行它们。 例如:

var formOperation = App.preInit(function(){
//Some Code ...
})
.init(function(){
//Some Code Here...
})
.load(function(){
//Other Code Here...
});

问题在于我根本不希望用户处理Deferred对象,我希望他们根据需要使用尽可能多的ajax calls。我不希望他们使用扩展到jQuery like ajaxQueue的函数。

我能想到的唯一方法是获取$.ajax calls列表并在调用它们之前设置Deferred对象。

在调用函数之前,您是否知道如何在ajax calls中获取function列表? 或者您还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

嗯,我想我已经找到了解决方案。 $.ajaxSetup()有一个名为beforeSend的东西,它将延迟对象传递给它!我可以创建一个数组并将延迟对象添加到它。

var ajaxCalls = [{}];
        $.ajaxSetup($.ajaxSettings, {
            beforeSend: function (deferred) {

                ajaxCalls.push(deferred);
            },
            complete: function (xhr, textStatus) {
                if (ajaxCalls.length == 1) {
                    //Do Something...
                }
            }
        });