2012-06-26 5 views
8

जे एस कोड में अगर वहाँ दो js वस्तुओं (एक एक यूआई (उदाहरण के एक प्रपत्र) संभाल रहे हैं और अन्य एक सर्वर के लिए एक अनुरोध पोस्टिंग।जावास्क्रिप्ट कस्टम इवेंट्स या सामान्य फ़ंक्शन कॉल में बेहतर क्या है?

क्या इन कस्टम घटनाक्रम या सामान्य का उपयोग कर घटकों के बीच बातचीत करने के लिए बेहतर तरीका होगा समारोह कॉल।

उदाहरण के लिए।

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

या

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

clickForm विधि का हिस्सा है यूआई घटक जो एचटीएमएल कोड की यूआई इंटरैक्शन के प्रबंधन के लिए ज़िम्मेदार है। यह फ़ंक्शन आमतौर पर तब सबमिट किया जाता है जब सबमिट बटन क्लिक किया जाता है।

सबमिटफॉर्म विधि मुख्य ऑब्जेक्ट का हिस्सा है जिसका उत्तरदायित्व सर्वर से अनुरोध करना है, प्रतिक्रिया को पार्स करना है और फिर यूआई घटक को परिणाम भेजना है।

इनमें से कौन सा दो तरीकों से बातचीत करने का एक बेहतर तरीका है। कोई सुझाव?

+0

मैं जावास्क्रिप्ट से बहुत परिचित नहीं हूं लेकिन मुझे यह पूछने की आवश्यकता नहीं है: क्या बेहतर है? उदाहरण के लिए, शायद कुछ ऐसा जो प्रदर्शन के लिए अच्छा है लेकिन कोड पठनीयता के लिए भयानक है। – Leri

+0

बस यह जोड़ना चाहते हैं कि इवेंट मॉडल का उपयोग करके कोड पुन: उपयोग और कोड साझाकरण के लिए बड़ा समय मिल जाए। जब आप विस्तार करने की आवश्यकता होती है तो आप ईवेंट में हुक कर सकते हैं और कस्टम श्रोताओं को बना सकते हैं, जबकि सामान्य फ़ंक्शन कॉल का उपयोग करना अधिक सीमित है (लेकिन इवेंट मॉडल से जुड़े ओवरहेड की वजह से तेज़)। कुछ मामलों में इवेंट मॉडल का उपयोग करने का प्रदर्शन ओवरहेड नगण्य बनाम फंक्शन कॉल है। – qodeninja

उत्तर

5

"बेहतर" एक मुश्किल अवधारणा है। :-)

घटनाओं का उपयोग करना वस्तुओं को अधिक ढीला रूप से जोड़ता है, जिसे आम तौर पर एक अच्छी बात माना जाता है, और संभावना के लिए केवल दो वस्तुओं से अधिक की संभावना के आगे जाने की संभावना है (उदाहरण के लिए, घटना के लिए एक से अधिक ग्राहक; और इसके विपरीत एक वस्तु दो स्रोतों पर घटना की सदस्यता ले सकती है)।

घटना तंत्र अधिक ओवरहेड होगा, जो ज्यादातर मामलों में कोई फर्क नहीं पड़ता है (निश्चित रूप से एक फॉर्म जमा करते समय नहीं), लेकिन मामलों की एक छोटी श्रेणी में (कुछ ऐसा होता है जो हजारों बार एक सेकंड होता है)। इवेंट मैकेनिज्म भी पढ़ने और डीबग करने के लिए थोड़ा सा ट्रिकियर हो सकता है।

+0

हाँ डीबगिंग घटनाओं के साथ एक समस्या हो सकती है। क्या ऐसा कोई तरीका है जिसमें ईवेंट को डिबगिंग करना बहुत आसान हो सकता है। कस्टम इवेंट आधारित बड़ा एप्लिकेशन कैसे एक तरीका बनाए रखता है जहां यह पता लगाना आसान होता है कि कौन सी वस्तुएं किसी ईवेंट को सुन रही हैं। –

+0

मुझे दोनों विधियों पर कुछ प्रदर्शन आंकड़े देखना अच्छा लगेगा; अगर किसी के पास एक अच्छी साइट या संदर्भ है जो वास्तव में सहायक होगा। – NuclearPeon

+0

घटनाक्रम प्लगइन के लिए बहुत अच्छे हैं (उदाहरण के लिए http://leafletjs.com/ देखें)। डाउनसाइड रेस-कंडीशन है, चीजों के क्रम को पूरी तरह से नियंत्रित करना मुश्किल है, जो मुश्किल डिबगिंग के लिए भी बनाता है। – knutole

संबंधित मुद्दे