이 작업을 자주 수행하는 경우 (특히 두 개 이상의 원격 호출이있는 경우) 원격 호출에서 AsyncTokens를 처리하는 고유 한 사용자 정의 클래스를 작성하여 모든 result() 함수가 호출 될 때 호출되는 final result 전화는 성공으로 끝납니다.
그렇지 않은 경우 ActionScript는 단일 스레드이므로 로컬 변수를 사용하여 두 호출이 모두 성공했는지 여부를 추적 할 수 있습니다.
private var resultFromRemoteCallA:Object;
private var resultFromRemoteCallB:Object;
private function handleRemoteCallA(event:ResultEvent):void {
resultFromRemoteCallA = event.result;
C();
}
private function handleRemoteCallB(event:ResultEvent):void {
resultFromRemoteCallB = event.result;
C();
}
private function C():void {
if (resultFromRemoteCallA && resultFromRemoteCallB) {
// do some thing with the results.
}
}
private function update():void {
resultFromRemoteCallA = resultFromRemoteCallB = null;
A(); B();
}
null 값이 필요한 경우 부울 변수를 사용하여 대신 결과 핸들러 호출을 추적 할 수 있습니다.
편집 : 저자가 파견가 다른 클래스에서 일어나는 것으로 나타났다 때문에, 다른 방법으로는 응답자를 따라 통과 (호출 수신자에) 그래서 같은 AsyncToken 관련에 첨부하는 것입니다해야 할 일 :
private function dispatchRemoteCall(resultHandler:Function, faultHandler: Function): void {
var resultToken: AsyncToken = remoteObject.foo('bar'); // remoteObject may or may not have a result/fault handler
resultToken.addResponder(new mx.rpc.Responder(resultHandler, faultHandler));
}
원격 호출이 완료가 (하는 당신이 파견 클래스 저장소에게 결과를하자 또는 발신자에 그것을 처리하도록 선택할 수 있습니다 포인트) 때
그런 다음과 같이, 호출 할 리스너를 전달할 수 있습니다
private function update(): void {
classA.dispatchRemoteCall(handleRemoteCallA, handleRemoteCallAFault);
}
이 일을 많이하게되면 파슬리 (Parsley) 나 스프링 액션 스크립트 (Spring Actionscript)와 같은 글로벌 이벤트 라우팅 (global event routing)을하는 프레임 워크가 있는지 살펴볼 수도 있습니다.
그러나 내 결과 처리기가 다른 클래스에 있으며 일부 값을 설정합니다. – fR0DDY