2010-08-26 4 views
38

मैं एक वेब अनुप्रयोग में कुछ मौजूदा कोड में देख रहा हूँ। मैं इस देखा:सेटटाइमआउट बिना किसी देरी के फ़ंक्शन को निष्पादित करने जैसा ही है?

window.setTimeout(function() { ... })

यह एक ही है बस समारोह सामग्री को क्रियान्वित अभी के रूप में?

+0

Aishwar, आप angusC के जवाब को स्वीकार कर सकता है? जिसे आपने स्वीकार किया वह बिल्कुल सही नहीं है, और एंजससी दिखाता है क्यों। – Lynn

उत्तर

72

यह तुरंत जरूरी नहीं होगा, न ही स्पष्ट रूप से देरी को 0 पर सेट करेगा। कारण यह है कि सेटटाइमआउट निष्पादन कतार से फ़ंक्शन को हटा देता है और यह केवल वर्तमान निष्पादन कतार के साथ जावास्क्रिप्ट समाप्त होने के बाद ही लागू किया जाएगा।

console.log(1); 
setTimeout(function() {console.log(2)}); 
console.log(3); 
console.log(4); 
console.log(5); 
//console logs 1,3,4,5,2 

के लिए अधिक विवरण देखने के http://javascriptweblog.wordpress.com/2010/06/28/understanding-javascript-timers/

20

एक न्यूनतम देरी कि setTimeout का उपयोग करता है (एचटीएमएल 5 के अनुसार 4ms, Firefox 3.6 10ms उपयोग करता है) नहीं है। मोज़िला डेवलपर सेंटर documentation page पर इसके बारे में एक चर्चा है।

+1

असल में, सही स्पष्टीकरण के लिए अन्य उत्तरों देखें! – Qwerty

1

आप मिलीसेकंड पैरामीटर मौजूद नहीं है ...

setTimeout(function() { /*something*/ }, 0); 

0 0 करने के लिए देरी सेट लेकिन क्या यह वास्तव में करता है अपने समारोह ब्राउज़र निष्पादन सूची के "कतार कूद" जाने के लिए है। ब्राउज़र चीजों की एक गुच्छा पेज पर वस्तुओं प्रतिपादन के रूप में ऐसी क्या करना है, और इस पर कॉल करके, अपने कार्य जैसे ही ब्राउज़र कुछ चक्र है चलेंगे।

+8

यह सवाल है ... शीर्षक के पूछ क्या होता है जब कोई प्रदान की :) –

+0

ओह ठीक विलंब हुआ है। मैंने सोचा कि यह एक वाक्यविन्यास त्रुटि थी क्योंकि विभिन्न दस्तावेज बताते हैं कि यह एक आवश्यक पैरामीटर है। तब मैंने जल्दी से कोशिश की और यह काम किया। – Gary

+0

दूसरा पैरामीटर है (अब?) की आवश्यकता https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout –

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