2012-06-26 13 views
8

En el código Js si hay dos objetos js (One Handling a UI (ejemplo a Form) y otro publicando una solicitud en un servidor¿Qué es mejor en eventos personalizados de JavaScript o en llamadas a funciones normales?

¿Cuál sería la mejor manera de interactuar entre estos componentes usando Custom Events o Normal? llamada de función.

por ejemplo.

clickForm = function(){ 
     validateForm(); 
     $(document).trigger("submitForm",{"userData":userData});//Event submitForm listened by formManager submitForm method. 
    } 

O

clickForm = function(){ 
    validateForm(); 
    formManager.submitForm(userData); 
    } 

método clickForm es parte de la Componente UI que se encarga de gestionar la interacción UI del código HTML. Esta función suele invocarse cuando se hace clic en un botón Enviar.

El método submitForm es parte del objeto central cuya responsabilidad es solicitar al servidor, analizar la respuesta y luego enviar el resultado al componente UI.

¿Cuál de estos dos métodos es una mejor manera de interactuar? ¿Alguna sugerencia?

+0

No estoy muy familiarizado con javascript pero no necesito eso para preguntar: ¿Mejor para qué? Por ejemplo, tal vez haya algo que sea genial para el rendimiento pero horrible para la legibilidad del código. – Leri

+0

Solo quiero agregar que usar el Modelo de eventos ayuda mucho para la reutilización de código y el uso compartido de código. Puede engancharse en eventos y crear oyentes personalizados cuando necesite expandirse, mientras que el uso de llamadas a funciones normales es más limitado (pero más rápido debido a la sobrecarga asociada con el Modelo de eventos). En algunos casos, la sobrecarga de rendimiento de usar el Modelo de eventos es insignificante frente a las llamadas a funciones. – qodeninja

Respuesta

5

"Mejor" es un concepto complicado. :-)

El uso de eventos acopla los objetos más libremente, lo que generalmente se considera algo bueno, y permite la posibilidad de más que solo los dos objetos que colaboran (por ejemplo, más de un suscriptor del evento; y, a la inversa, un objeto podría suscribirse al evento en dos fuentes).

El mecanismo de evento tendrá más sobrecarga, lo cual no importa en la mayoría de los casos (ciertamente no al enviar un formulario), pero podría en una pequeña clase de casos (algo que ocurre miles de veces por segundo). Los mecanismos de evento pueden ser un poco más difíciles de leer y depurar, también.

+0

Si la depuración puede ser un problema con eventos. Hay una forma en que el evento puede describir dónde es mucho más fácil depurar. Cómo la gran aplicación basada en eventos personalizados mantiene una forma en la que es fácil detectar qué objetos están escuchando un evento. –

+0

Me encantaría ver algunas estadísticas de rendimiento en ambos métodos; si alguien tiene un buen sitio o referencia que sería realmente útil. – NuclearPeon

+0

Los eventos son geniales para los complementos (consulte http://leafletjs.com/, por ejemplo). Las desventajas son las condiciones de carrera, es difícil controlar perfectamente el orden de las cosas, lo que también crea una depuración complicada. – knutole

Cuestiones relacionadas