저는 더 많은 이벤트 중심 환경에 익숙하지만 현재는 함수 호출로 모든 것을 사용하고 있습니다. 내가 이것에 대해 물었을 때 데비안 중 하나는 콜백이 버블 링으로 인해 더 빠르기 때문에라고했지만 버블 링 속성은 항상 false로 설정할 수있었습니다 ...빠른 방법으로 함수 콜백을 찾을 수 있습니다 ...
그래서 어떤 문제인지 알아 내려고 노력하고 있습니다. 콜백 함수가 참조되고 있습니다.
public class A {
public function A(){}
public function func_1():Number{ return 1; }
public function func_2():Number{ return 2; }
public function doSomething:Function{
if(Math.random > 0.5) return func_1; else return func_2;
}
}
가 그럼 난 클래스 B의 코드를 실행할 수 있습니다 : I 조치를받을 BI 내부에 브레이크 포인트를 넣을 때 (34567 @) = 그래서 기능을
public class B{
public var a:A = new A();
private var action:Function;
public function B(){ action = a.doSomenthing(); }
}
을 예를 들어
정말 완전히 쓸모가 없다 ... 나는 func_1과 func_2 둘 다에 중단 점을 넣을 수 있다는 것을 알았지 만, 나는 이것을 일반적인 예제로 사용하고있다. 함수 콜백이 코드를 통해 분산되어있다 ... 이름을 얻는 방법이있다. 함수의 메모리 주소로? 감사합니다
나는 당신이 스택 추적에 대해 무엇을 말하고 있는지 알고 있습니다. 하지만 코드의 기능을 물리적으로 단계적으로 수행해야합니다. 아래 예제에서는 콜백()에 중단 점을 넣어야합니다. 스택 추적 업데이트를 보려면이 단계를 건너 뜁니다. 문제는 호출되기 전에 콜백을 알고 싶습니다. 때때로 그들은 다른 장소에서 부름을 받는다. 콜백을받을 수있는 다른 방법은 없습니까?
public var callbacks:Array = [];
public function loadURL(url:String, callback:Function){
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
callbacks.push(callback);
var request:URLRequest = new URLRequest(url);
loader.load(request);
}
public function completeHandler(event:Event):void
{
for(var i:int = 0; i < callbacks.length; i ++){
var callback:Function = callbacks[i];
callback();
}
}
봐 :
그리고 여기에 후대에 대한 코드의 기술이다. –
콜백을 너무 자주 사용하지만, asdoc 주석도 사용하기 때문에 이전에는 문제가 없었습니다. 또한 콜백은 클래스에서'Function' 유형의 유일한 변수 일 수 있으므로 쉽게 식별 할 수 있어야합니다. 나는 당신의 예가 공공의 재산을 사용하고있는 것을 본다. 나는 보호 된 변수와 getter/setter를 대부분 사용하고있다.도움이된다면 다음과 같이 할 수 있습니다. public function getFunctionVars (instance : *) : XMLList { \t \t \t return describeType (instance) .method. (@ returnType == "Function"); \t \t} '...하지만 작업하는 코드는 가능한 한 간단하고 문서화해야합니다. –