【发布时间】:2016-06-29 10:35:27
【问题描述】:
我知道 javascript 不使用Class,至少在常识中不使用`。我想知道如何在类变量中返回和保存 AJAX 返回值,而不是在回调中调用多个方法。
var Reader = function(){
//Initialize some variables
this.data = null;
}
Reader.prototype.makeAjaxCall = function(urlPath){
//Make and Ajax call and return some value
Ajax.success(function(data){
this.data = data;
});
}
Reader.prototype.searchData = function(param){
//Needs access to this.data
}
Reader.prototype.findData = function(id){
//Needs access to this.data
}
Reader.prototype.deleteItem = function(id){
// Needs access to this.data
}
在上面的代码中,任何需要访问data属性的函数都需要在ajax success callback中调用,所以如果我有十个需要数据的方法,我必须将它们全部排列在回调,我觉得不对。如何最大限度地减少回调中的函数数量,并以其他方式确保函数成功并将数据保存到实例变量data。
【问题讨论】:
-
有多种方法可以解决这个问题,这取决于您需要的行为究竟是什么
-
您可以为 AJAX 调用中的错误设置 data = undefined 或创建一些错误标志。因此,无论何时数据未定义或您有错误标志 - 您都知道您的 AJAX 调用是否成功。
-
你可以使用$.extend函数对所有函数进行margin并添加不同的属性
-
我怀疑
Ajax.success(function(data){this.data = data;});中的this是否有效。最好使用箭头函数,self = this;或bind(this);
标签: javascript jquery ajax callback