2013-04-21 32 views
0

我试图创建一组function(如下面的App对象),它接受preInit,Init,Load函数并在订购。 例如:执行几个js函数,以便当某些函数hava几个ajax调用时

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

的问题是,我不希望用户处理所有递延对象,我想,他们希望他们能够使用多达ajax calls。我不希望他们使用扩展到jQuery like ajaxQueue的功能。

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

你有什么想法在调用函数之前如何获得ajax calls的列表function? 或者您有其他建议吗?

+0

我不认为有什么办法可以告诉(编程)如果一个函数传递给你的代码作为参数做任何Ajax。即使你可以以某种方式检查该功能,它可能会调用其他功能,反过来做Ajax的东西...... – nnnnnn 2013-04-21 08:05:04

+0

嗯,我想我已经找到了一个解决方案。但问题是我不能将它作为答案发布。因为我今天问过这个问题。 '$ .ajaxSetup()'有一个名为'beforeSend'的东西,它传递给它的延迟对象!我可以创建一个数组并将延迟对象添加到它。 – 2013-04-21 13:28:30

回答

0

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

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

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