Una dificultad en el desarrollo de clientes en Flex es su carecter totalmente asíncrono.
Nosotros utilizamos Cairngorm para el desarrollo en Flex y nos suponía un problema añadido el que no hay control sobre la finalización de un comando asíncrono. Hay veces que es necesario realizar una operación concreta nada más haber recibido una serie de datos, por ejemplo.
Esto, dentro de Cairngorm, puede hacerse en la función result del Comando (implementa la interfaz IResponder) que ha lanzado la petición. El problema de esta técnica estriba en que el comando, que es parte del Controlador, no conoce nada acerca de la Vista ni del Modelo. En realidad debería de poder acceder al Modelo, según el patrón MVC.
También se puede hacer utilizando observers que controlan cuando los datos pedidos han sido recibidos y por tanto se puede realizar la operación subsiguiente. Pero complica bastante el código y lo hace muy frágil.
Al final, estamos utilizando una técnica que parece bastante lógica y flexible y, gracias a Dios, es fácil de implementar. La inspiración ha venido a raíz del siguiente enlace: Cairngorm View Notifications.
Simplemente se basa en pasar al evento un parámetro adicional con la función que será llamada cuando el evento finalice.
La función result pasaría a ser algo así:
override public function result(event:Object) : void {
var eventR : ResultEvent = event as ResultEvent;
if (_event.function_result != null)
_event.function_result.call(this, eventR);
}
Me encantan las pequeñas ideas que ofrecen grandes soluciones.
Enviar un comentario nuevo