Если вы обнаружите, что делаете это часто (особенно с более чем 2 удаленными вызовами), вы можете написать свой собственный класс, который обрабатывает AsyncTokens от удаленных вызовов, с функцией final (), которая вызывается при всех удаленных вызовах.конец в успехе.
Если нет, так как 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();
}
Если вы ожидаете нулевые значения,вместо этого вы можете использовать логическую переменную для отслеживания вызова обработчика результатов.
EDIT : поскольку автор указал, что диспетчеризация происходит в другом классе, другой способ сделать эточтобы передать респондента и присоединить его к 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.