क्या ब्राउज़र सक्रिय setInterval
और setTimeout
आईडी का ट्रैक रखता है? या यह ट्रैक रखने के लिए डेवलपर तक पूरी तरह से है?क्या ब्राउज़र सक्रिय टाइमर आईडी का ट्रैक रखता है?
यदि यह उनका ट्रैक रखता है, तो क्या यह बीओएम के माध्यम से सुलभ है?
क्या ब्राउज़र सक्रिय setInterval
और setTimeout
आईडी का ट्रैक रखता है? या यह ट्रैक रखने के लिए डेवलपर तक पूरी तरह से है?क्या ब्राउज़र सक्रिय टाइमर आईडी का ट्रैक रखता है?
यदि यह उनका ट्रैक रखता है, तो क्या यह बीओएम के माध्यम से सुलभ है?
उपयोग कर सकते हैं याद कर सकता है यह डेवलपर रखने के लिए के लिए है ट्रैक का। आप setTimeout/setInterval फ़ंक्शन के लौटे हुए मान का उपयोग कर ऐसा कर सकते हैं और उस मान को clearTimeout/clearInterval फ़ंक्शन पर पास कर सकते हैं - जैसा कि यहां अन्य उत्तरों में वर्णित है।
ऐसा प्रतीत होता है क्योंकि प्रत्येक ब्राउज़र अंतराल के ट्रैक को अपने तरीके से ट्रैक करने के लिए लागू करेगा।
w3.org/TR/2009/WD-html5-20090212/no से।एचटीएमएल (एक मसौदा है, लेकिन w3schools और http://w3.org/TR/Window यह लगभग उसी तरह की व्याख्या) - setTimeout और वापसी एक लंबी और clearTimeout/clearInterval एक लंबे स्वीकार खोजने के लिए और रद्द
अद्यतन:
इस सवाल का 2 पहलुओं रहे हैं।
मैं सिर्फ इसलिए एक डेवलपर रों रूप में # 1 (और बाद में # 2) कि ओ पी का मतलब सामान्य अर्थ में "वे पता लगाया जाता है" के लिए अनुमान/वह उन पर नियंत्रण चाहते हैं कर सकते हैं ।
संक्षेप में, हां उन्हें ट्रैक किया जाता है (जैसा कि @s_hewitt ने देखा है, long
ब्राउज़र द्वारा मूल्यों के रूप में) और सेटअप के दौरान टाइमर के संदर्भ को बनाए रखने के द्वारा डेवलपर द्वारा प्रबंधित किया जा सकता है।
एक डेवलपर आपको कॉल करके नियंत्रित कर सकते हैं (उदाहरण के लिए बंद) उन्हें (clearInterval(handleRef), या clearTimeout(handleRef))
लेकिन वहाँ कोई डिफ़ॉल्ट window.timers
या इसी तरह के संग्रह है कि आप मौजूदा टाइमर की एक सूची देता है के रूप में - आप की आवश्यकता होगी अगर आपको लगता है कि आपको जरूरत है तो खुद को बनाए रखें।
function startPolling(delay){
pollHandle = setInterval(doThis, delay);
}
function stopPolling(){
clearInterval(pollHandle);
}
function doThisIn30minUnlessStopped(){
timerHandle = setTimeout(doThisThing, 1800000);
}
function stop30minTimer(){
clearTimeout(timerHandle);
}
आप बस अपनी घड़ी को एक चर संदर्भ बनाने के लिए/जब जरूरत है, स्पष्ट यह नाम से की जरूरत है, और।
जब आप कोई अन्य पृष्ठ लोड करते हैं, तो सभी टाइमर स्वचालित रूप से ब्राउज़र द्वारा साफ़ किए जाते हैं, इसलिए आपको एक हैंडल बनाए रखने की आवश्यकता नहीं होती है, और जब तक आपको आवश्यकता नहीं होती तब तक साफ़ करें।
उह ... मेरे पास बहुत कुछ है इसके बारे में गंभीर संदेह ... – Pointy
निश्चित रूप से काम करता है, मैंने इसे 10 से अधिक वर्षों से उपयोग किया है। – scunliffe
यह काम करता है, लेकिन मैं ऑब्जेक्ट "clearTimeout ('timerHandle')" ऑब्जेक्ट के नाम के बजाय "clearTimeout (timerHandle)" ऑब्जेक्ट पास करता हूं। जांच नहीं की है कि पसंदीदा तरीका कौन सा है। –
यदि आप इस विंडो के बारे में उत्सुक हैं कि टाइमर को उसकी खिड़की से 'याद' कैसे किया जाता है, तो यह आपकी रूचि रख सकता है। नीचे स्क्रिप्ट पर
<!doctype html>
<html lang= "en">
<head>
<meta charset= "utf-8">
<title>Timer </title>
</head>
<body>
<h1>Timers</h1>
<script>
if(!window.timers){
var timers= [], i= 0;
while(i<5){
timers.push(setInterval(function(){
if(confirm(timers.join('\n')+'\nRemove a timer?')){
clearInterval(timers.shift());
}
},
i*1000+1000));
++i;
}
}
</script>
</body>
</html>
देखो, ब्राउज़र प्रत्येक setTimeout की आईडी यात्रा
for (i = 1; i <= d; i++) {
(function(j) {
var delay = j/d;
t[j] = setTimeout(function() {
elem.style.top = j+"px";
},delay);
})(i);
}
आप उनके द्वारा
for (i in t) {
alert(t[i]);
}
आप पर नज़र रखने के इस तरह के वैश्विक टाइमर जोड़ सकते हैं setTimeout
अधिभावी द्वारा करने के लिए setInterval/seInterval
फ़ंक्शंस। एक बोनस के रूप आप आसानी से जब एक टाइमर सेट या पॉपअप है कोड जोड़ सकते हैं, लाइव टाइमर या पॉपअप टाइमर, आदि को ट्रैक ...
उदाहरण के लिए:
timers = {}; // pending timers will be in this variable
originalSetTimeout = window.setTimeout;
// override `setTimeout` with a function that keeps track of all timers
window.setTimeout = function(fu, t) {
var id = originalSetTimeout(function() {
console.log(id+" has timed out");
delete timers[id]; // do not track popped timers
fu();
}, t);
// track this timer in the `timers` variable
timers[id] = {id:id, setAt: new Date(), timeout: t};
console.log(id+" has been set to pop in "+t+"ms");
}
// from this point onward all uses of setTimeout will be tracked, logged to console and pending timers will be kept in the global variable "timers".
मैं इस के लिए एक अच्छा जवाब भी देखना चाहेंगे ; मुझे लगता है कि यह "नहीं" है लेकिन मैंने कभी इसका शोध नहीं किया है। – Pointy
वैसे भी अगर यह किसी भी तरह से उन्हें पंजीकृत करता है, तो आप कैसे जानेंगे कि कौन सा है? खैर मुझे लगता है कि अगर आपको पता है कि सिर्फ एक टाइमआउट या अंतराल या जो कुछ भी है, तो आपको यह जानने की आवश्यकता नहीं होगी। – Pointy
हाहा, आपने डोम के बजाय "बीओएम" कहा था। – Felix