1

这个问题没有帮助。

我正在将函数推送到一个数组上,该数组是一个回调列表,我可能想删除一个特定的函数。

我希望能够遍历数组并删除特定函数。像这样的东西:

    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 调用的名称。

4

1 回答 1

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);
                }
            }
        }
    }
}

希望有帮助。

于 2012-09-27T15:42:12.833 回答