This question没有帮助。
我正在将函数推送到一个数组,该数组是一个回调列表,我可能想删除一个特定的函数。
我希望能够遍历数组并删除特定的功能。像这样:
public function clearCallback(callName:String = null, callback:Function = null) :void{
if(callName == null){
//remove all callbacks
this.callbackFuncs = {};
}
else if(this.callbackFuncs.hasOwnProperty(callName)){
if(callback == null){
//remove all callbacks for this API call
this.callbackFuncs[callName] = [];
}
else{
//remove specific callback function
for(var i:Number = 0, iLen:Number = (this.callbackFuncs[callName] as Array).length; i < iLen; i ++){
if(this.callbackFuncs[callName][i] == callback){
this.callbackFuncs[callName][i] = null;
}
}
}
}
}
我评论//remove specific callback function
时遇到了麻烦,我该如何比较两个函数?
在上面的代码中,callName
不是函数名,它是回调注册到的API调用的名称。
答案 0 :(得分:2)
您没有删除您只是将其设置为null的回调,尝试类似以下内容:
public function clearCallback(callName:String = null, callback:Function = null) :void{
if(callName == null){
//remove all callbacks
this.callbackFuncs = {};
}
else if(this.callbackFuncs.hasOwnProperty(callName)){
if(callback == null){
//remove all callbacks for this API call
this.callbackFuncs[callName] = [];
}
else{
//remove specific callback function
for(var i:Number = (this.callbackFuncs[callName] as Array).length-1; i >=0; i --){
if(this.callbackFuncs[callName][i] == callback){
this.callbackFuncs[callName].splice(i,1);
}
}
}
}
}
希望有所帮助。