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