2012-03-16 22 views
5

हैलो मेरे पास कोड का यह स्निपेट है जो कुछ चुनने के बाद भी कुछ को आग लगा देगा।सेट इंटरवल - केवल एक बार कैसे आग लगती है?

समस्या यह है कि यदि उदाहरण के लिए, मैंने 3 सेकंड लगाए तो यह हर 3 सेकंड में आग लग जाएगा, मुझे केवल 3 सेकंड के बाद आग लगाना है।

function playSound(timeLeft){ 
    var sendDataTimeout = function(){ 
     alert('OK'); 
    } 
    var intervalReference = 0; 
    clearInterval(intervalReference); 
    intervalReference = setInterval(sendDataTimeout, timeLeft); 
} 
+4

इसके बजाय 'setTimeout' का उपयोग करें। –

+0

वैकल्पिक रूप से, 'अंतराल संदर्भ' वैश्विक बनाएं (इसे 'playSound' फ़ंक्शन के बाहर ले जाएं और फिर इसे' senDataTimeout' के अंदर साफ़ करें - लेकिन मैं 'setTimeout' के लिए चुनूंगा – scibuff

उत्तर

12

इसके बजाय setTimeout का उपयोग करें, यह लगभग समान काम करता है लेकिन केवल एक बार आग लग जाएगा। आप आप अब clearTimeout उपयोग करने के लिए की जरूरत नहीं है

function playSound(timeLeft){ 
    var sendDataTimeout = function(){ 
     alert('OK'); 
    } 
    setTimeout(sendDataTimeout, timeLeft); 
} 

setInterval को clearTimeout और setTimeout इसलिए इसकी बहुत समान है। लेकिन एफवाईआई यह अस्तित्व में है और स्पष्ट अंतराल के समान काम करता है।

13

आप setInterval जरूरत नहीं है, आप setTimeout की जरूरत है।

जैसा कि नाम कहता है, setInterval नियमित रूप से आग लगती है, जबकि setTimeout केवल एक बार आग लगती है। हालांकि उपयोग समान है।

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