जब मैं बहुत ही असाधारण व्यवहार में आया तो मैं वेब श्रमिकों पर एक संभाल पाने की कोशिश कर रहा हूं। कुछ कारणों से इसे कुछ सेकंड के बाद समाप्त कर दिया गया है, भले ही मेरे पास कोड है जो चल रहा है।मेरा वेब वर्कर क्यों समाप्त हो गया है?
मेरा कोड यहां है;
मुख्य जावास्क्रिप्ट फ़ाइल:
$(document).ready(function() {
var worker = new Worker("js/TestWorker.js");
worker.addEventListener('message', function (event) {
console.log(event.data);
});
worker.addEventListener('error', function (event) {
console.log(event);
});
});
कार्यकर्ता फ़ाइल:
(function() {
var updateCounter = 0;
var updater = function() {
updateCounter += 1;
console.log("Update counter: " + updateCounter);
postMessage("test");
setTimeout(updater, 10000);
};
updater();
})();
के रूप में कहा गया है, कार्यकर्ता बस कुछ ही सेकंड, 10-20seconds या तो के बाद से कार्य बंद हो जाता है।
लेकिन अगर मैं कोड का यह टुकड़ा अपनी मुख्य जावास्क्रिप्ट-फ़ाइल में जोड़ता हूं;
var check = function() {
var localWorker = worker;
// setTimeout(check, 1000);
};
// setTimeout(check, 1000);
कार्यकर्ता इरादे के अनुसार काम करता है। सेटटाइम-कॉल की आवश्यकता नहीं है, इसलिए उन्हें टिप्पणी क्यों की जाती है। (ध्यान दें कि मैं सिर्फ अच्छी तरह से worker.length या कुछ इसी तरह के साथ काम की जगह ले सकता और यह अभी भी ठीक से काम करेगा।
कोई इस व्यवहार की व्याख्या कर सकते हैं? कार्यकर्ता समाप्त हो रही है और (ग़लती से) द्वारा कचरा-एकत्र ब्राउज़र या कुछ और यहाँ क्या हो रहा है कि मैं याद कर रहा हूँ
नोट करने के लिएवर्थ कि अपने ब्राउज़र (क्रोम) कंसोल के लिए किसी भी त्रुटि या चेतावनी outputing नहीं है या तो है
संपादित करें:। एक ही व्यवहार देखा जाता है कि कोड को किसी अज्ञात फ़ंक्शन के अंदर निष्पादित किया गया है या नहीं।
EDIT2: यदि मैं वैश्विक दायरे में कार्यकर्ता चर रखता हूं तो इसे समय-समय पर समाप्त नहीं किया जाता है। इसके लिए क्या कारण हो सकता है?
बहुत उत्सुक। मैं इस धारणा के तहत था कि वेब श्रमिक डोम नोड्स के समान हैं कि उन्हें केवल स्पष्ट रूप से मार दिया जा सकता है (यानी उन्हें एकत्रित नहीं किया जाना चाहिए, खासतौर से जब आप कुछ श्रोताओं को जोड़ चुके हैं)। क्या आपने फ़ायरफ़ॉक्स, आदि में एक ही कोड की कोशिश की है? यह मुझे एक बग की तरह लगता है। – Dave
@ डेव हाँ, अभी फ़ायरफ़ॉक्स में परीक्षण किया गया है, जैसा कि इसे करना चाहिए। – jimka