0

如果我设置了一个接受回调的函数:

function loadSomething(path:String, callback:Function):void;

并且该回调应该接受给定的类型,例如表示一些加载信息的字符串:

function onLoaded(response:String):void;

// Load some data into onLoaded.
loadSomething("test.php", onLoaded);

是否可以评估将用于回调的函数并确保它具有给定数量的参数并且参数接受正确的类型?例如

function broken(arg:Sprite):void;

// This should throw an error.
loadSomething("test.php", broken);
4

2 回答 2

2

我认为您不应该费心进行这种检查,因为它会产生不必要的开销。您可以在执行回调时简单地抛出异常:

try {
    doCallback(response);
} catch(e:*) {
    trace('Incompatible callback');
}

如果您真的想进行检查,您可以使用反射来完成。只需调用describeType(callback)flash.utils解析 XML。

于 2012-07-16T03:50:59.010 回答
-1

您可以做的一件简单的事情是通过length在方法闭包上调用属性来检查可接受参数的数量,例如:

function some ( val1 : int, val2 : int ) : void { return; }

trace(some.length); // traces 2

其他更复杂的方法可能是使用AS3Commons 字节码库。您可以尝试使用动态代理

于 2012-07-16T09:10:37.913 回答