我有三个功能。一个是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()函数。这段代码出了什么问题?
答案 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);
});
}