2013-03-24 13 views
7

यदि मेरे पास जावास्क्रिप्ट कोड चल रहा है जो उदाहरण के लिए टाइमर पर कुछ क्रिया करता है और यह कोड वेब पेज के टैब 1 और टैब 2 में वेब पृष्ठों में एम्बेड किया गया है, तो क्लाइंट कोड समवर्ती रूप से चला सकता है ? या जावास्क्रिप्ट क्लाइंट कोड हमेशा एक ही ब्राउज़र थ्रेड में चलाया जाता है?जावास्क्रिप्ट/वेब ब्राउज़र थ्रेडिंग मॉडल

वैकल्पिक रूप से, यदि माता-पिता और बच्चे के फ्रेम के साथ कोई फ्रेमसेट है, तो क्या इस स्थिति में जावास्क्रिप्ट कोड एक साथ चल सकता है?

क्या कोई मानक निर्दिष्ट मॉडल है या यह ब्राउज़र निर्भर है?

मेरा मुख्य लक्ष्य वातावरण आईई 9 है इसलिए यह जानने में दिलचस्पी होगी कि वहां क्या होता है।

EDIT मैं थ्रेडिंग समर्थन या जावास्क्रिप्ट में थ्रेडिंग कैसे नहीं ढूंढ रहा हूं। मैं व्यक्तिगत रूप से जरूरत नहीं देखता हूं। यह जीवन को और अधिक जटिल बनाता है। मैं सिर्फ यह जानना चाहता हूं कि मुझे इसके बारे में चिंता करने की ज़रूरत है, और यदि ऐसा है तो ब्राउज़र पर।

+0

दो टैब पूरी तरह से असंबंधित हैं; के लिए कोई मानक नहीं है। उदाहरण के लिए क्रोम एक अलग * प्रक्रिया * में भी चलता है, जबकि ओपेरा केवल एक धागे में सबकुछ करने के लिए जाना जाता है। – Bergi

उत्तर

5

एक ही जावास्क्रिप्ट "ऑब्जेक्ट स्पेस" (ब्राउज़र में एक पृष्ठ या नोड.जेएस में एक दुभाषिया उदाहरण) के लिए सबसे अधिक थ्रेड चल रहा है। वास्तव में जावास्क्रिप्ट के संदर्भ में धागे के बारे में बात करना सार्थक नहीं है। जेएस निष्पादन मॉडल इवेंट-लूप और कॉलबैक आधारित है।

अलग-अलग फ्रेम कभी-कभी नहीं चल सकते हैं क्योंकि वे एक दूसरे के डीओएम (और विस्तारित मनमानी वस्तुओं द्वारा) तक पहुंच सकते हैं। यह थ्रेडिंग असुरक्षित बना देगा।

वेब श्रमिकों के साथ कार्यकर्ता सीमा में किसी भी डेटा संरचना के लिए कोई सीधी पहुंच नहीं है, इसलिए थ्रेडिंग देखने योग्य नहीं है और सुरक्षित रूप से हो सकती है। संदेश पास करने के माध्यम से यहां एकमात्र संचार है।

+0

आपको लगता है कि फ़्रेम केवल संदेशों का उपयोग करके संवाद करते हैं? दो पेज (एसओपी द्वारा प्रतिबंधित नहीं) सीधे दूसरे के तत्वों के साथ बातचीत कर सकते हैं। – Bergi

+0

@ बर्गि सही! मैंने तदनुसार अपना जवाब बदल दिया। यह वास्तव में दिखाता है कि अलग-अलग फ्रेम एक साथ नहीं चल सकते हैं। – usr

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