1
我有一些方法(methA
,methB
...)需要在Javascript中调用相同的方法methMain
。这种方法methMain
然后需要获取一些数据,当它完成后,对调用它的方法(methA或MethB ...)进行回调。创建一个参数使用相同的范围参数 - 在Javascript中
我可以成功地创建使用什么这里写指针/引用的方法:How can I pass a reference to a function, with parameters?
该解决方案,我已经看到了所有其他人,似乎并没有在当前范围内工作。 此代码将无法正常工作:
function TestStructure() {
this.gotData = false;
//define functions
this.methA = function (parA) { };
this.methB = function (parb) { };
this.createFunctionPointer = function (func) { };
this.createFunctionPointer = function (func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments, 1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
};
this.methA = function (parA) {
alert('gotData: ' + this.gotData + ', parA: ' + parA);
if (this.gotData == false) {
var fp = this.createFunctionPointer(this.methA, parA);
this.methMain(fp);
return;
}
//...do stuff with data
}
this.methB = function (parB) {
alert('gotData: ' + this.gotData + ', parB: ' + parB);
if (this.gotData == false) {
var fp = this.createFunctionPointer(this.methB, parB);
this.methMain(fp);
return;
}
//...do stuff with data
}
this.methMain = function (func) {
//...get some data with ajax
this.gotData = true;
//callback to function passed in as parameter
func();
}
}
var t = new TestStructure();
t.methA('test');
当methMain
做一个回调FUNC(methA
或methB
)变量this.gotData
将不会被设置。
有没有针对这个问题的解决方案,还是我需要重新考虑设计? 我想要做到这一点,使用ajax获取数据,而不使用async:false进行阻塞。
谢谢你的意见,它现在可以工作 - 这有点令人尴尬,因为我尝试了你在发布之前做过的事情。 :-) – AxAn