2013-02-23 17 views
9

जावास्क्रिप्ट में HTML5 वेबवर्कर्स को नष्ट करने का कोई तरीका है?वेबवर्कर्स को नष्ट करना

यहां मेरी स्थिति है: मेरे पास एक वेब एप्लिकेशन है जो कुछ प्रतिपादन प्रक्रियाओं को अनुकूलित करने के लिए वेबवर्कर्स (16 और 32 के बीच कहीं भी) की एक सभ्य संख्या उत्पन्न करता है। यह प्रक्रिया पहले कुछ बार ठीक काम करती है, लेकिन जब पृष्ठ कई बार चलाया जाता है तो पृष्ठ मर जाता है (पृष्ठ को फिर से लोड किए बिना)। यह वही त्रुटि है जब मैं एक बार (100+) वेबवर्कर्स को एक बार में फेंकने की कोशिश करता हूं, इसलिए मुझे लगता है कि मैं एक ही बाधा में दौड़ रहा हूं।

जब स्क्रिप्ट एक से अधिक बार चलता है, तो पहले दौर में तत्काल वेबवर्कर्स को अस्तित्व में रखने की आवश्यकता नहीं होती है; मैं किसी भी WebWorker वस्तुओं का पुन: उपयोग नहीं करता हूं। मैं उन वेबवर्कर्स को नष्ट करना चाहता हूं जिन्हें पहली बार बनाया गया था ताकि नए वेबवर्कर्स को आगे बढ़ाने की कोशिश करते समय स्क्रिप्ट के भविष्य के निष्पादन बंद न हों।

मैंने क्रोम और फ़ायरफ़ॉक्स में केवल इस समस्या को देखा है; सफारी में यह सीमा नहीं लगती है।

उत्तर

10

आप मुख्य विंडो से कॉल करने के लिए तुरंत एक कार्यकर्ता को समाप्त करने में सक्षम होना चाहिए: वैकल्पिक रूप से https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

, आप कार्यकर्ता से close() कॉल कर सकते हैं अपने आप में देखें:

myWorker.terminate(); 

पूर्ण एपीआई यहाँ देखें : https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

+0

बिल्कुल वही जो मैं खोज रहा था। –

+0

लेकिन यह केवल कार्यकर्ता को अपने कार्य को पूरा करने से रोकता है, कार्यकर्ता का उदाहरण अभी भी स्मृति में है .. – vsync

+1

@vsync मैं वेबवर्कर उदाहरणों के साथ भी काम कर रहा हूं। मेरे मामले में, मुझे 4 अलग-अलग डोम क्षेत्रों पर काम करने के लिए 4 वेब श्रमिकों की आवश्यकता है जिन्हें प्रत्येक वेब कार्यकर्ता को पास की जाने वाली कुछ जानकारी के आधार पर हर सेकेंड को अद्यतन करने की आवश्यकता होती है जिसे ब्राउज़र पर वापस भेज दिया जाता है। इस उपयोग के मामले में, क्या मुझे प्रत्येक कॉल के बाद प्रत्येक वेबवर्कर को समाप्त()/बंद() करना चाहिए, या क्या मैं प्रदर्शन समस्याओं, मेमोरी लीक इत्यादि के बारे में चिंता किए बिना उसी का पुन: उपयोग कर सकता हूं? –

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