Переместите здесь "// сделать еще кое-что", но нам нужно сделать паузу, пока мы не получим результат из родительского "раздела, в другую часть. Я предполагаю, что вы делаете удаленный вызов вашей базы данных, которая имеет обратный вызов. Я не уверен, какой механизм вы используете, но давайте предположим, RemoteObject.
Вы можете передать функцию для настраиваемого события, которое вы отправляете. Раздел базы данных вашего кода может прикрепить указатель этой функции к AsyncToken или просто добавить его в экземпляр класса. Затем, когда он возвращается с результатами, вы можете вызвать функцию, которую вы передали как часть события. Радости асинхронного программирования.
Я бы порекомендовал взглянуть на шаблоны, используемые в Cairngorm и Swiz (Swiz - мой предпочтительный фреймворк), так как то, как они выполняют вызовы базы данных в этих фреймворках, именно то, что вы пытаетесь сделать здесь.
Например, вы можете сделать что-то вроде этого:
dispatchEvent(new MyCustomEvent("getDBcontents", callBackFunction));
private function callBackFunction(stuffToProcess:Object):void {
//do more stuff here after the stuff is returned
}
//first create MyCustomEvent class extending Event
//Then you need something to handle the event, you can build the event listener yourself, or use something like Swiz to make your life easier
//here is your event handler that you can call yourself, or assign through Swiz Cairngorm
var st:Function;
public myEventHandler(event:MyCustomEvent):void {
st = event.callBackFunction; //your param on your custom function
var token:AsyncToken=this.service.doSomething();
var responder:mx.rpc.Responder=new mx.rpc.Responder(genericResultsHandler, faultHandler);
token.addResponder(responder);
}
genericResultsHandler(result:ResultEvent):void{
if (st != null)
st(result.data);
}