2011-09-10 16 views
17

यह जावास्क्रिप्ट के अनुसार एक "धागा" है, लेकिन कोड परंपरागत थ्रेडेड मॉडल में फिट नहीं लगता है।जावास्क्रिप्ट नया "थ्रेड" बनाएं

क्या थ्रेड की अवधारणा के संबंध में यह कोड स्पष्ट करना संभव है?

function test() { 
    alert("Test"); 
} 

// this creates a new "thread," but doesn't make much sense to the untrained eye 
setTimeout(test, 0); 

क्या शाखा बनाने का कोई और तरीका है?

उत्तर

27

आप मूल रूप से सामान्य प्रवाह से test पर कॉल ले रहे हैं और इंजन जितनी जल्दी हो सके फ़ंक्शन को निष्पादित करेगा। इसका मतलब है, आप textअसीमित रूप से निष्पादित कर रहे हैं।

कोड स्पष्ट करने के लिए, आप एक सार्थक नाम है जो एक ही करता है के साथ एक समारोह बना सकते हैं:

function executeAsync(func) { 
    setTimeout(func, 0); 
} 

executeAsync(function() { 
    alert("Test"); 
}); 

आप वास्तविक धागे करना चाहते हैं, web workers पर एक नजर है।

+0

मुझे बस अतुल्यकालिक रूप से चलाने की आवश्यकता है, धागे आवश्यक नहीं हैं। धन्यवाद! – skeggse

+2

वेब श्रमिक अधिकांश वेब अनुप्रयोगों के लिए एक विकल्प नहीं हैं (लिंक देखें) असल में, आईई 10 इसका समर्थन करने वाला पहला संस्करण है। http://caniuse.com/webworkers –

+1

@ komma8.komma1 की टिप्पणी के बाद से बहुत कुछ बदल गया है। अब आप लगभग सभी ब्राउज़रों में वेब श्रमिकों का उपयोग कर सकते हैं! –

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