2010-10-15 5 views
24

मैं एक चेकआउट लिख रहा हूं यह देखने के लिए कि क्या टाइमआउट सक्रिय है या नहीं। मैं ऐसा करने का सोच रहा था:सेट टाइमटाइम कभी भी आईडी के रूप में 0 लौटा सकता है?

var a = setTimeout(fn, 10); 
// ... Other code ... where clearTimeout(a) can be called and set to null 
if (a != null) 
{ 
    // do soemthing 
} 

अगर यह कभी संभव हो जाएगा कि एक 0. उस मामले में हो जाएगा मैं a !== null

उत्तर

3

पहला: 0 शून्य के समान नहीं है, (0 == शून्य) प्रत्येक मामले में गलत होगा;

यदि आप किसी के खिलाफ 'ए' का परीक्षण करना चाहते हैं: पहले 'ए' को परिभाषित करें और बाद में सेटटाउट को 'ए' पर असाइन करें। फिर 'ए' के ​​प्रकार के खिलाफ जांचें। यदि इसका 'अपरिभाषित' है, तो टाइमर अभी तक ट्रिगर नहीं हुआ है

+0

मेरी गलती :) मैंने जांच नहीं की, लेकिन हाँ '0! = शून्य 'हमेशा। मुझे उम्मीद है कि उन्हें जावास्क्रिप्ट में बराबर होना चाहिए, '' और 0 'जैसे समानता पर विचार करना - लेकिन ऐसा नहीं है। – Aishwar

13

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

यह संभव हो सकता है (और संभावित) कि कुछ कार्यान्वयन 0 को छोड़कर आपको उस पर भरोसा नहीं करना चाहिए। आपको !== के साथ जाना चाहिए।

संक्षेप में: हालांकि शायद सभी ब्राउज़र को बाहर आईडी setTimeout द्वारा लौटाए से 0, तुम नहीं है कि के साथ अपने कोड को ध्यान में विशेष रूप से जब आपके सभी क्या करना है एक अतिरिक्त = जोड़ने है लिखना चाहिए।

+0

+1 धन्यवाद। आपने मेरे प्रश्न का उत्तर दिया, हालांकि स्वीकृत उत्तर ने मेरी चिंता का समाधान किया। – Aishwar

20

It shouldn't, इस दी:

handle = window . setTimeout(handler [, timeout [, arguments ] ]) 

handle जो उपयोगकर्ता-एजेंट से परिभाषित पूर्णांक कि शून्य से कि समय समाप्ति की पहचान करेगा इस कॉल को सेट करने की अधिक से अधिक है होने दो।

+1

क्या वे HTML5 चश्मा नहीं हैं? –

+1

@Alin: मैं https://developer.mozilla.org/en/DOM/window.setTimeout के माध्यम से इस साइट पर आया, जहां यह कहता है कि यह डोम स्तर 0 का हिस्सा है। इसलिए मैंने सोचा कि यह वास्तव में HTML5 से पुराना है, लेकिन शायद मैं कुछ गलत व्याख्या कर रहा हूँ। –

+0

+1 लिंक के लिए धन्यवाद। आपने मेरे प्रश्न का उत्तर दिया, हालांकि स्वीकृत उत्तर ने मेरी चिंता का समाधान किया। – Aishwar

2

अधिकतर ब्राउज़र को पूर्णांक में वापस आ जाएगी 1 से शुरू और setTimeout के प्रत्येक कॉल के लिए incrementing तो सिद्धांत रूप में यह 0.

कभी नहीं हो सकता है लेकिन ध्यान रखें कि यह वास्तव में कल्पना की कोई आवश्यकता नहीं है, केवल एक सम्मेलन ब्राउज़र का पालन करना पड़ता है। अधिक जानकारी के लिए यहां स्वीकृत उत्तर देखें: setInterval/setTimeout return value

+3

में भी मिश्रणों को मिश्रण करना अच्छा नहीं है, यह स्पष्ट रूप से HTML5 spec (http://www.w3.org/TR/html5/timers.html) का हिस्सा है। प्री-एचटीएमएल 5 यह सिर्फ एक सम्मेलन था। – mhenry1384

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