2012-01-16 12 views
15

मुझे आश्चर्य है कि क्या होता है जब कोई उपयोगकर्ता उस टैब को बंद करता है जो कार्यकर्ता धागे को जन्म देता है, जबकि थ्रेड अभी भी काम कर रहा है। क्या यह सब कुछ रोकता है? यदि हां, तो टैब बंद होने पर भी पृष्ठभूमि में धागे को चलाने का कोई तरीका है?जब एचटीएमएल 5 वेब वर्कर थ्रेड होता है तो टैब बंद होने पर क्या बंद होता है?

उत्तर

11

हां यह सब कुछ रोकता है, एक (समर्पित) कर्मचारी अपने मालिक से बाहर नहीं जा सकता है। यदि आप किसी साझा कर्मचारी का उपयोग करते हैं, जिसमें एकाधिक मालिक हो सकते हैं, तो कार्यकर्ता तब तक जीवित रहेगा जब तक कि कम से कम एक स्वामी जीवित न हो। यह मामला तब भी है जब आप उलझन में MessagePort को दूसरी विंडो में पास करते हैं (यानी संदेश पोर्ट का मालिक कार्यकर्ता का स्वामी नहीं है)।

तो, साझा श्रमिकों के साथ आप एक नई विंडो खोलकर स्वामित्व को "स्थानांतरित" कर सकते हैं जो कार्यकर्ता के साथ अपना कनेक्शन स्थापित करता है (new SharedWorker(...) के साथ) और फिर पुरानी विंडो बंद करें। लेकिन एक खिड़की हमेशा खुला रहना चाहिए।

3

यहाँ

http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerglobalscope

एक नजर डालें मैं लगता यह इस बात की पुष्टि की जाती है कि एक बार ब्राउज़र चला जाता है, किसी भी श्रमिकों रोकना होगा।

जब भी कोई दस्तावेज़ वस्तु त्याग दिया जाता है, यह प्रत्येक कार्यकर्ता जिसका सूची है कि दस्तावेज़ के कार्यकर्ता दस्तावेजों की सूची से हटा दिया जाना चाहिए।

ऐसे मामले में जहां आपके पास वेब श्रमिकों का उपयोग करके एक विंडो है, और आप उस विंडो (या टैब) को बंद करते हैं, तो कार्यकर्ता चला जाता है।

यदि आपके पास ऐसा कोई मामला है जहां आपके पास खिड़की है, जो अन्य विंडो या टैब खोलती है, तो कर्मचारी जारी रख सकते हैं। लेकिन अगर आप सबकुछ बंद करते हैं, तो वे सब चले जाते हैं।

+1

बस स्पष्ट करने के लिए, क्योंकि नई विंडो के आसपास चर्चा केंद्रित है, यह नए पेज लोड पर भी लागू होना चाहिए। एक नए पेज लोड करना वर्तमान दस्तावेज़ ऑब्जेक्ट को छोड़ देता है (वेब ​​वर्कर चला जाता है), और नए दस्तावेज़ लोड पर पुनर्निर्मित किया जाता है। – ElHaix

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