jQuery $ .when()没有按预期工作

时间:2014-10-07 09:07:57

标签: javascript jquery ajax

我有三个功能。一个是AJAX调用,一个是给这个AJAX函数的回调函数,最后一个是一个完全独立的函数,等待AJAX​​函数完成。第三个函数必须完全独立于AJAX函数,它不能作为参数传递给AJAX函数。我的代码:

doAjaxStuff: function(callbackFunction){
     $.ajax(
          // do AJAX call
          // With the AJAX data, create HTML div elements 
          callbackFunction();
     )
}

callMeMaybe: function(data){
     //do stuff with the return data from the AJAX call
}

patientFunction: function(){
    $.when(this.doAjaxStuff).done(function(){
         alert("doAjaxStuff() has finished!");
         // do stuff to the created HTML div elements.
    });
}

但我从未收到警告信息。成功执行AJAX调用和回调函数,但永远不会触发$ .when()函数。这段代码出了什么问题?

1 个答案:

答案 0 :(得分:8)

要使用when,您需要从doAjaxStuff方法返回ajax延迟/承诺:

doAjaxStuff: function(callbackFunction){
     return $.ajax(
          // do AJAX call
          callbackFunction();
     )
}

正如您所提到的,回调需要使用当前语法提供,但是使用promises,您不再需要回调。

doAjaxStuff: function(){
     return $.ajax(
          // do AJAX call
     );
}

致电:

patientFunction: function(){
    var self = this;   // Need to retain a reference to this
    $.when(this.doAjaxStuff()).done(function(data){
         alert("doAjaxStuff() has finished!");
         // do stuff to the created HTML div elements.
         self.callMeMaybe(data);
    });
}