# हर लिसनर के लिए एक जिम्मेदार स्वामी और स्पष्ट जीवनचक्र तय करें

> प्रत्येक दृश्य के ईवेंट श्रोताओं को एक स्पष्ट स्वामी, सेटअप सीमा और टियरडाउन पथ देकर बार-बार इनपुट और कॉलबैक रोकें।

- URL: https://oneshotgems.ai/hi/topics/preventing-game-event-listener-duplicates
- श्रेणी: गेम डेवलपर के लिए
- प्रकार: गाइड
- अपडेट किया गया: 5 अक्टूबर 2026

यदि एक क्लिक पुनरारंभ होने के बाद दो बार सक्रिय होता है, तो हर बार दृश्य खुलने पर एक श्रोता को पंजीकृत किया जा सकता है और उसे कभी नहीं हटाया जा सकता है। वह दृश्यमान डुप्लिकेट-एक्शन लक्षण व्यापक मेमोरी-लीक जांच से अलग है: पंजीकरणों की गिनती करके और उन्हें दृश्य जीवनचक्र से जोड़कर शुरू करें। प्रत्येक श्रोता के पास एक स्पष्ट स्वामी होना चाहिए, एक सेटअप बिंदु जो उस स्वामी के लिए एक बार चलता है, और जब दृश्य इनपुट स्वीकार करना बंद कर देता है तो एक टियरडाउन पथ होना चाहिए।

## एक सुविचारित जीवनचक्र सीमा पर पंजीकरण करें

रेंडर फ़ंक्शन या प्रत्येक फ़्रेम से विंडो कीडाउन हैंडलर संलग्न करने से बचें। स्टार्ट या माउंट फ़ंक्शन में दृश्य-विशिष्ट सेटअप रखें, और सुनिश्चित करें कि फ़ंक्शन क्लीनअप के बिना दो बार नहीं चल सकता है। removeEventListener का उपयोग करते समय कॉलबैक का संदर्भ रखें; बार-बार बनाए गए अनाम कॉलबैक का बाद में मिलान करना मुश्किल होता है। वैकल्पिक रूप से, संबंधित हैंडलर्स के एक समूह को एक AbortController दें और उसके सिग्नल को श्रोता विकल्पों में पास करें, फिर दृश्य समाप्त होने पर उस समूह को निरस्त करें। (AbortController) (AbortSignal) (removeEventListener)

इवेंट लक्ष्य सावधानी से चुनें. गेम सक्रिय होने के दौरान एक वैश्विक विंडो श्रोता कुंजियों के लिए उपयुक्त हो सकता है, लेकिन एक बटन का क्लिक हैंडलर उस बटन पर होता है। एक ही कार्रवाई के लिए मूल प्रतिनिधिमंडल हैंडलर और प्रत्यक्ष हैंडलर दोनों को पंजीकृत न करें जब तक कि ईवेंट प्रसार जानबूझकर डिज़ाइन का हिस्सा न हो।

## लक्षण जांच के रूप में बार-बार दृश्य प्रविष्टि का परीक्षण करें

एक दृश्य खोलें, उसकी क्रिया को एक बार दबाएँ, छोड़ें, और उसे फिर से खोलें। एक इनपुट को अभी भी एक प्रभाव पैदा करना चाहिए। चक्र को पांच बार दोहराएं और सत्यापित करें कि प्रति प्रेस प्रतिक्रिया संख्या एक रहती है; यह एक कार्यात्मक जाँच है, स्मृति माप नहीं। यह भी पुष्टि करें कि पुराने दृश्य से इनपुट अब बाहर निकलने के बाद अपना स्कोर या स्थिति नहीं बदलता है। एमडीएन श्रोताओं को समूहीकृत करने के लिए AbortSignal समर्थन का दस्तावेजीकरण करता है और नोट करता है कि अनाम फ़ंक्शन को स्पष्ट रूप से हटाने के लिए उनका संदर्भ बनाए रखने की आवश्यकता है।

## टियरडाउन को स्वामित्व के साथ जोड़कर रखें

जब किसी दृश्य को प्रतिस्थापित किया जाता है, तो उनके द्वारा संदर्भित वस्तुओं का निपटान करने से पहले उसके श्रोताओं को रोक दें या हटा दें। यदि कुछ श्रोता पूरे एप्लिकेशन शेल से संबंधित हैं, तो उन्हें हर राउंड के दौरान हटाने के बजाय लंबे समय तक रहने वाले मालिक में रखें। पुनः प्रारंभ, रोकें और रिटर्न-टू-मेनू प्रवाह के आसपास एक प्रतिगमन केस जोड़ें, क्योंकि प्रत्येक संक्रमण गलती से एक ही दृश्य को दो बार माउंट कर सकता है या इसकी सफाई को छोड़ सकता है।

## सवाल

**एक कुंजी दबाने से अनेक गेम क्रियाएँ क्यों उत्पन्न होती हैं?** एक ही कार्रवाई में कई पंजीकृत हैंडलर हो सकते हैं, या पूर्वज और बच्चा दोनों घटना को संसाधित कर सकते हैं। पंजीकरणों की गणना करें और दृश्य जीवनचक्र सीमा पर घटना प्रसार का निरीक्षण करें।

**क्या एबॉर्टकंट्रोलर ईवेंट श्रोताओं को हटा सकता है?** हाँ। समान सिग्नल के साथ संबंधित श्रोताओं को जोड़ें और जब उनका स्वामी समाप्त हो जाए तो abort करें। यह एक समूह को स्पष्ट विखंडन पथ देता है; यह यह तय करने की जगह नहीं लेता कि कौन सा मालिक उन्हें नियंत्रित करता है।

## अपनी जिज्ञासा के साथ आगे बढ़ें

- [ब्राउज़र गेम में मेमोरी लीक को ट्रैक करें](https://oneshotgems.ai/hi/topics/game-memory-leaks): बरकरार रखे गए गेम दृश्यों, श्रोताओं, टाइमर और समय के साथ जमा होने वाली संपत्तियों को ढूंढने के लिए दोहराए जाने योग्य प्ले और क्लीनअप चेक का उपयोग करें।
- [ब्राउज़र गेम्स में फोकस प्रबंधित करें](https://oneshotgems.ai/hi/topics/game-focus-management): गेम को दृश्य फोकस स्थिति देकर और ओवरले बंद होने के बाद फोकस बहाल करके कीबोर्ड प्रविष्टि, मेनू और रिटर्न पथ को पूर्वानुमानित बनाएं।

## आगे पढ़ें

- [MDN addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)

---
मूल पेज: https://oneshotgems.ai/hi/topics/preventing-game-event-listener-duplicates
