根据要求,我已将代码更新为我的具体问题:
function A(){
this.data1 = null;
this.data2 = null;
}
A.prototype.receiveData1AndData2FromServer = function(callback){
this.doneCallback = $.proxy( function foo(importantData, callback){
this.data1 = importantData.data1;
this.data2 = importantData.data2;
callback != undefined ? callback() : null;
}, this, callback);
checkFail = $.proxy(
function (jqXHR, textStatus, errorThrown) {
try {
var str = new String(jqXHR.responseText);
var result = JSON.parse(str.substring(str.indexOf('{')));
this.doneCallback(result);
} catch (ex) { console.log(ex); }
}
, this);
$.ajax({
type: 'POST', url: 'get_data1_and_data2.php', data: { 'id': this.id }, dataType: 'json'
}).done(this.doneCallback)
.fail(checkFail);
}
(问题是callback参数正在替换第一个参数(importantData)而不是第二个参数。)
对A :: receiveData1AndData2FromServer的调用具有不同的回调参数。 我想将回调传递给A :: doneCallback,所以当检索完成后,将调用正确的回调。
答案 0 :(得分:0)
您的问题不是很明确,但jQuery.proxy()
支持自版本1.6以来的多个参数
答案 1 :(得分:0)
经过深思熟虑,我找到了解决方案。 将context参数拆分为具有多个字段(上下文和所需参数)的对象已经解决了它。我希望它对其他人有用。
function A(){
this.data1 = null;
this.data2 = null;
}
A.prototype.receiveData1AndData2FromServer = function(callback){
this.doneCallback = $.proxy( function foo(importantData, callback){
this.context.data1 = importantData.data1;
this.context.data2 = importantData.data2;
this.callback.callback != undefined ? this.callback() : null;
}, {context:this, callback:callback});
checkFail = $.proxy(
function (jqXHR, textStatus, errorThrown) {
try {
var str = new String(jqXHR.responseText);
var result = JSON.parse(str.substring(str.indexOf('{')));
this.doneCallback(result);
} catch (ex) { console.log(ex); }
}
, this);
$.ajax({
type: 'POST', url: 'get_data1_and_data2.php', data: { 'id': this.id }, dataType: 'json'
}).done(this.doneCallback)
.fail(checkFail);
}