2012-06-26 30 views
8

Trong mã Js nếu có hai đối tượng js (Một Xử lý giao diện người dùng (ví dụ: Biểu mẫu) và một yêu cầu khác gửi đến máy chủ.Điều gì là tốt hơn trong các sự kiện tùy chỉnh JavaScript hoặc các cuộc gọi chức năng bình thường?

Cách nào tốt hơn để tương tác giữa các thành phần này bằng Sự kiện tùy chỉnh hoặc Bình thường chức năng cuộc gọi.

Ví dụ.

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

HOẶC

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

phương pháp clickForm là một phần của Thành phần giao diện người dùng chịu trách nhiệm quản lý tương tác giao diện người dùng của Mã HTML. Chức năng này thường được gọi khi nút gửi được nhấp.

submitPhương pháp phương thức là một phần của đối tượng cốt lõi có trách nhiệm yêu cầu máy chủ, phân tích phản hồi và sau đó gửi kết quả đến thành phần giao diện người dùng.

Phương pháp nào trong hai phương pháp này là cách tốt nhất để tương tác. Bất kỳ đề xuất nào?

+0

Tôi không quen với javascript nhưng tôi không cần điều đó để hỏi: Tốt hơn cho cái gì? Ví dụ, có thể một cái gì đó tuyệt vời cho hiệu suất nhưng khủng khiếp cho khả năng đọc mã. – Leri

+0

Chỉ muốn thêm rằng sử dụng Mô hình sự kiện sẽ giúp tiết kiệm thời gian cho việc sử dụng lại mã và chia sẻ mã. Bạn có thể nối vào các sự kiện và tạo các trình lắng nghe tùy chỉnh khi bạn cần mở rộng, trong khi sử dụng các cuộc gọi hàm bình thường thì hạn chế hơn (nhưng nhanh hơn vì phí trên được liên kết với Mô hình sự kiện). Trong một số trường hợp, chi phí hoạt động của việc sử dụng Mô hình sự kiện là không đáng kể so với các cuộc gọi hàm. – qodeninja

Trả lời

5

"Tốt hơn" là một khái niệm phức tạp. :-)

Sử dụng sự kiện làm cho các đối tượng trở nên lỏng lẻo hơn, thường được coi là một điều tốt và cho phép khả năng chuyển tiếp nhiều hơn hai đối tượng cộng tác (ví dụ: nhiều hơn một người đăng ký sự kiện; và ngược lại một đối tượng có thể đăng ký sự kiện trên hai nguồn).

Cơ chế sự kiện sẽ có nhiều chi phí hơn, không quan trọng trong hầu hết các trường hợp (chắc chắn không phải khi gửi biểu mẫu), nhưng có thể trong một số ít trường hợp (điều gì đó xảy ra hàng nghìn lần mỗi giây). Các cơ chế sự kiện có thể cũng phức tạp hơn một chút để đọc và gỡ lỗi.

+0

Gỡ lỗi có thể là một vấn đề với các sự kiện. Có cách nào trong đó sự kiện có thể mô tả nơi gỡ lỗi dễ dàng hơn nhiều. Ứng dụng lớn dựa trên sự kiện tùy chỉnh duy trì cách thức dễ phát hiện đối tượng nào đang nghe một sự kiện. –

+0

Tôi rất thích xem một số thống kê hiệu suất trên cả hai phương pháp; nếu có ai có trang web hoặc tham chiếu tốt sẽ thực sự hữu ích. – NuclearPeon

+0

Sự kiện rất tuyệt vời cho các plugin (xem http://leafletjs.com/ ví dụ). Nhược điểm là điều kiện chủng tộc, thật khó để kiểm soát hoàn hảo thứ tự của sự vật, điều này cũng khiến cho việc gỡ rối khó khăn. – knutole

Các vấn đề liên quan