Flex: Atendiendo a la finalizacion de comandos

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.

Todavía no hay comentarios

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Etiquetas HTML permitidas: <a> <blockquote> <br> <cite> <code> <dd> <div> <dl> <dt> <em> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <img> <li> <ol> <p> <pre> <span> <strong> <swf> <table> <tbody> <td> <th> <tr> <ul>
    Allowed Style properties: background-color, background-image, border, border-bottom, border-bottom-color, border-bottom-style, border-bottom-width, border-color, border-left, border-left-color, border-left-style, border-left-width, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-style, border-top-width, border-width, color, direction, font, font-family, font-size, font-style, font-variant, font-weight, height, left, line-height, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, padding, padding-bottom, padding-left, padding-right, padding-top, right, text-align, text-decoration, top, width
  • Syntax highlight code surrounded by the {syntaxhighlighter OPTIONS}...{/syntaxhighlighter} tags.
  • E-Mail addresses are hidden with reCAPTCHA Mailhide.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para comprobar si eres un ser humano y evitar el envío automático desde sistemas de spam