15

जहां तक ​​मैं समझता हूँ, सभी जावा स्क्रिप्ट कोड घटना पर ही आधारित है और एक ही ब्राउज़र धागे पर निष्पादित करता है।फ्लैश निष्पादन से जावास्क्रिप्ट कोड को क्या थ्रेड कहा जाता है?

हालांकि, मैं कुछ जावास्क्रिप्ट कार्यों कि एक ही पृष्ठ पर बैठे एक SWF वस्तु के भीतर से कहा जाता है की है। क्या यह कोड नियमित जेएस कोड के समान तरीके से चलता है, या यह कुछ अलग फ्लैश थ्रेड पर है?

यदि यह एक अलग थ्रेड पर है, मैं setTimeout() प्राप्त करने के लिए उपयोग कर सकते हैं यह जे एस घटनाओं पर चलने के लिए थ्रेड? उदाहरण:

function calledFromFlash() { 
    setTimeout(doActualWork, 0); 
} 

function doActualWork() { 
    // blah blah blah 
} 

उत्तर

10

यह अभी भी एक ही धागे पर है। हालांकि, अधिकांश व्यावहारिक उद्देश्यों के लिए यदि आपके पास इतनी लंबी चल रही जावास्क्रिप्ट है कि आप चिंतित हैं कि आपका "मुख्य" कार्य सेटटाइमआउट से कॉल को अवरुद्ध कर सकता है, तो आपको अपने अंतर्निहित दृष्टिकोण पर फिर से विचार करने पर विचार करना चाहिए। इनाम के लिए

अद्यतन:

जावास्क्रिप्ट में सूत्रण के अधिक सामान्य प्रश्न पर विस्तार करने के लिए, वहाँ Bobince से एक बहुत ही खुलासा जवाब के साथ a great discussion है। उन्होंने कुछ बहुत ही रोचक परिदृश्यों का हवाला दिया जो सवाल में बुला सकते हैं कि क्या हम वास्तव में जेएस को एकल-थ्रेडेड मान सकते हैं, और उनका निष्कर्ष "काफी नहीं" है।

टिप्पणी है, जो मैं से सहमत हैं, का निष्कर्ष यह है कि जे एस क्रम अंदर नजरिए से, ब्रह्मांड एकल पिरोया है, लेकिन क्योंकि जे एस सैंडबॉक्स आसपास के बुनियादी ढांचे है नहीं एकल पिरोया है, यह में अप्रत्याशित तरीके से राज्य के साथ सैंडबॉक्स और मक के अंदर पहुंच सकते हैं। रनटाइम के अंदर से, कुछ अज्ञात इकाई "प्रकृति के नियमों को निलंबित कर सकती है" और चीजों को बदल सकती है। लेकिन रनटाइम में उस परिदृश्य को मूल रूप से संभालने के लिए कोई थ्रेडिंग निर्माण नहीं है।

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

तो भयावह समस्याओं के उन प्रकार दरकिनार, हम शायद तरह बातें एक मूल्य के अप्रत्याशित रूप से हमें नीचे से बाहर बदल जाती है के लिए नीचे कर रहे हैं। लेकिन अच्छी तरह से लिखित कोड उस के साथ ठीक होना चाहिए। यहां तक ​​कि बॉबन्स के उदाहरण में, शामिल सभी कोड अभी भी कोड है जिसे हम स्वेच्छा से पृष्ठ में शामिल करते हैं (यहां तक ​​कि खुद को भी लिखा है), यह आश्चर्यजनक हो सकता है कि अगर आपका मुख्य कॉलस्टैक स्पष्ट रूप से "अवरुद्ध" हो जाता है तो यह आश्चर्यचकित हो सकता है। लेकिन फिर व्यावहारिक समस्याओं से बात करते हुए, उस परिदृश्य में आप सबसे बुरी चीज क्या कर सकते हैं? कुछ भी गंभीर नहीं है।

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

+0

हाय रेक्स, आपके उत्तर के लिए बहुत बहुत धन्यवाद। एक अनुवर्ती: क्या यह सही क्रॉस-ब्राउज़र है, और क्या आप इसका समर्थन करने वाले किसी भी संदर्भ को जानते हैं? मैं कॉल अवरुद्ध होने के बारे में चिंतित नहीं हूं, मैं बस यह सुनिश्चित करना चाहता हूं कि कॉलबैक कोड और मेरे नियमित कार्यक्रमों के बीच कोई सिंक्रनाइज़ेशन समस्या न हो। – Karthik

+0

जावास्क्रिप्ट में एकाधिक धागे से निपटने के लिए बस कोई तंत्र नहीं है। यह अपने आप में सबूत है कि यह * बहु-थ्रेडेड नहीं है। यह पोस्ट प्रति सबूत नहीं है लेकिन जेएस में थ्रेडिंग की चिंताओं को ध्यान में रखते हुए उत्कृष्ट बिंदु उठाता है: http://damienkatz.net/2006/04/how_to_create_a.html –

+0

यदि आप जेएस में थ्रेडिंग पर जानकारी के लिए Google खोजते हैं, तो आप जेएस को थ्रेड किया गया है, जो बहुत सारे ब्लॉग ढूंढते हैं, लेकिन यह सब गलतफहमी पर आधारित है कि जेएस इंजन अपने मेजबान (ब्राउज़र) के संबंध में कैसे काम करता है। –

2

फ्लैश बाहरी इंटरफेस कॉल आपके मुख्य एप्लिकेशन के समान प्रोसेसिंग थ्रेड का उपयोग करके समकालिक रूप से किया जाता है। फ्लैश से जेएस तक कॉल को आपके जेएस एप्लिकेशन में बाध्यकारी किसी भी घटना के समान माना जाता है।

मेरे पास blogged about है जो आवश्यक होने पर आपके लाभ के लिए इसका उपयोग करता है, हालांकि यह अक्सर परेशानी होती है।

कुछ साधन इस तथ्य की चर्चा करते हुए बताया गया है: linklinklinklink

मुझे आशा है कि चीजों को स्पष्ट मदद करता है।

+0

कुछ लिंक टूटा हुआ है, मुझे कोई समस्या है जो संबंधित हो सकता है, क्या आप लिंक को ठीक कर सकते हैं? – HLL

+0

मुझे समाप्त होने वाले किसी भी अन्य लिंक के बारे में निश्चित नहीं है, लेकिन मेरा ब्लॉग लिंक इस पर बदल गया: https://labs.tomasino.org/as3-synchronous-url-xml-loading.html –

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