2012-06-26 5 views
8

В Js-коде, если есть два js-объекта (один обрабатывает пользовательский интерфейс (пример формы) и другую отправку запроса на сервер.Что лучше в JavaScript Пользовательские события или обычные вызовы функций?

Каким будет лучший способ взаимодействия этих компонентов с использованием пользовательских событий или Normal вызов функции.

Для примера.

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

ИЛИ

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

метод clickForm является частью UI, который отвечает за управление взаимодействием пользовательского интерфейса HTML-кода. Эта функция обычно вызывается при нажатии кнопки отправки.

submitForm метод является частью основного объекта, задачей которого является предоставление запроса серверу, анализ ответа и последующая передача результата в компонент пользовательского интерфейса.

Какой из этих двух методов является лучшим способом взаимодействия. Все предложения?

+0

Я не очень хорошо разбираюсь в javascript, но мне это не нужно: лучше для чего? Например, возможно, что-то отличное для производительности, но ужасно для чтения кода. – Leri

+0

Просто хочу добавить, что использование модели событий помогает увеличить время повторного использования кода и совместного использования кода. Вы можете подключаться к событиям и создавать пользовательские прослушиватели, когда вам нужно расширять, тогда как использование обычных вызовов функций более ограничено (но быстрее из-за накладных расходов, связанных с моделью событий). В некоторых случаях накладные расходы на использование модели событий незначительны по сравнению с вызовами функций. – qodeninja

ответ

5

«Лучше» - это сложная концепция. :-)

Использование событий связывает объекты более свободно, что обычно считается хорошей вещью, и допускает возможность продвижения вперед не только двух взаимодействующих объектов (например, более одного абонента к событию; и наоборот, объект может подписаться на событие по двум источникам).

Механизм событий будет иметь больше накладных расходов, что не имеет значения в большинстве случаев (конечно, не при отправке формы), но может быть в небольшом классе случаев (что-то, что происходит тысячи раз в секунду). Механизмы событий могут быть немного сложнее читать и отлаживать.

+0

Да, отладка может быть проблемой с событиями. Есть ли способ, в котором событие может описывать, где отладка намного проще. Как приложение, основанное на настраиваемых событиях, поддерживает способ, при котором легко обнаружить, какие объекты прослушивают событие. –

+0

Мне очень хотелось бы посмотреть статистику эффективности обоих методов; если у кого-то есть хороший сайт или ссылка, которая была бы действительно полезной. – NuclearPeon

+0

События отлично подходят для плагинов (например, http://leafletjs.com/). Даунсайд - это гоночные условия, сложно контролировать порядок вещей, что также приводит к сложной отладке. – knutole