2011-03-24 17 views
18

मैं जीडब्ल्यूटी का उपयोग करके कुछ वेब एप्लिकेशन प्रोग्रामिंग कर रहा हूं और "ब्राउजर इवेंट लूप" शब्द से उलझन में हूं।ब्राउज़र ईवेंट लूप क्या है?

मुझे ऐसी परिस्थितियों का सामना करना पड़ा है जहां मुझे स्थगित आदेश निष्पादित करने की आवश्यकता है और ब्राउज़र ईवेंट लूप पूरा होने के बाद "कुछ करें"।

मैं जानना चाहता हूं कि यह वास्तव में क्या है और घटना लूप प्रक्रिया के दौरान क्या होता है और किस क्रम में होता है?

+2

इसी तरह: http://stackoverflow.com/questions/5131086/using-the-gwt-scheduler –

उत्तर

18

एक ब्राउज़र इवेंट लूप ब्राउज़र द्वारा शुरू किया गया थ्रेड है जो लगातार विभिन्न घटनाओं के लिए स्कैनिंग और चल रहा है, जैसा लगता है। जैसे-जैसे घटनाएं होती हैं उन्हें ईवेंट कतार में रखा जाता है और एक ईवेंट थ्रेड द्वारा बदले में चलाया जाता है। आपके जावास्क्रिप्ट को अपने स्वयं के लूप को पूरा करने के लिए इंतजार नहीं करना चाहिए या ऐसा कुछ भी नहीं करना चाहिए ... यह उस निरंतर घटना लूप थ्रेड को अवरुद्ध कर देगा। इसके बजाय आप setTimeout या setInterval जैसे कुछ का उपयोग करेंगे और आप जिस भी परिस्थिति की प्रतीक्षा कर रहे हैं उसकी जांच करें ताकि ब्राउजर काम कर सके, जबकि ब्राउज़र काम कर सके।

GWT में इस प्रक्रिया है कि यह कर सकते हैं सह चुनते कुछ हद तक scheduler का उपयोग कर अच्छा है - अपने मामले में जहां घटना पाश के बाद कुछ को चलाना चाहता हूँ 'पूरा करता है' आप शायद scheduleFinally या scheduleDeferred उपयोग करना चाहते हैं जाएगा। यह ईवेंट कतार में कोड के टुकड़े के लिए एक हैंडलर इंजेक्ट करेगा ताकि यह वर्तमान निष्पादन संदर्भ (वर्तमान निष्पादन संदर्भ ==) में अन्य सभी कोड के बाद चलाए जा सके जहां आप वर्तमान जावास्क्रिप्ट ऑब्जेक्ट पदानुक्रम में रूट के साथ विंडो के साथ हैं ऑब्जेक्ट) चलाया जाता है लेकिन कतार में रखे गए अगले कार्यक्रम से पहले।

+1

इसके अलावा, हमारे विजेट और यूआई तत्वों को लूप में अंतिम घटना डीओएम के अनुलग्नक है, जिसके बाद ब्राउज़र घटना पाश पूरा करता है? – gofeddy

+1

डोम हेरफेर घटनाओं को अन्य घटनाओं के समान तरीके से संभाला जाता है। वे जरूरी नहीं कि पहले या आखिरी घटना आग लग जाए, जहां भी वे कतार में जमीन पर हों। वे डोम पेड़ को भी बुलबुला करते हैं ताकि आप घटनाओं के ट्रिगर पर कहीं भी उन घटनाओं के लिए श्रोताओं को सुन सकें जहां ईवेंट ट्रिगर होता है। वेनिला जेएस में जटिल कारक यह है कि प्रत्येक ब्राउज़र अलग-अलग डोम उत्परिवर्तन कार्यक्रमों को संभालता है। – Ichorus

+0

एक एकीकृत घटना हैंडलिंग योजना को आजमाने और बनाने के लिए जीडब्ल्यूटीई सिस्टम के साथ जीडब्ल्यूटी 'कैप्चर' घटनाएं। घटनाएं ऊपर उल्लिखित वृक्ष बुलबुले योजना का पालन करती हैं, लेकिन प्रत्येक कार्यक्रम के लिए यह पहली बार जीडब्ल्यूटी हैंडलर मैनेजर के माध्यम से पारित होता है जो उस प्रकार के आयोजन के लिए पंजीकृत हैंडलर की तलाश करता है। यदि यह एक पाता है तो यह इवेंट हैंडलर कोड ट्रिगर करता है अगर यह मानक हैंडलिंग के लिए ब्राउज़र पर वापस नहीं जाता है। आप क्या करने की कोशिश कर रहे हैं, बिल्कुल? – Ichorus

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