HighDots Forums  

setTimeout und setInterval

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss setTimeout und setInterval in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Thomas Mlynarczyk
 
Posts: n/a

Default setTimeout und setInterval - 05-24-2005 , 04:32 PM






Hallo,

Beim Setzen eines Timeouts oder Intervals per setTimeout bzw. setInterval
bekomme ich eine ID in Form eines Integers zurück. Dazu wüßte ich gerne
folgendes:

1) Kann diese ID auch 0 sein oder ist der Test "if (ID) {/* gültiger Timer
gesetzt */}" zuverlässig?

2) Könnte ich einen mit setTimeout gesetzten Timer auch per clearInterval
stoppen und umgekehrt? Oder sind die beiden Funktionen wirklich streng
getrennt und ich muß damit rechnen, daß eine ID von setTimeout durchaus
denselben Wert wie eine andere ID von setInterval haben kann?

Danke im Voraus,
Gruß,
Thomas




Reply With Quote
  #2  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: setTimeout und setInterval - 05-24-2005 , 05:16 PM






Thomas Mlynarczyk wrote:

Quote:
Beim Setzen eines Timeouts oder Intervals per setTimeout bzw.
setInterval bekomme ich eine ID in Form eines Integers zurück. Dazu
wüßte ich gerne folgendes:

1) Kann diese ID auch 0 sein oder ist der Test "if (ID) {/* gültiger
Timer gesetzt */}" zuverlässig?
Dazu hat sich Netscape leider niemals geäußert. In der Netscape-Referenz
wird empfohlen, eine zusätzliche Variable zu verwenden, die bspw. einen
booleschen Wert enthält, der angibt, ob der Timer aktiv ist oder nicht:

Quote:
var timerID = null
var timerRunning = false

function stopclock(){
if(timerRunning)
clearInterval(timerID)
timerRunning = false
}

function startclock(){
// Make sure the clock is stopped
stopclock()
timerID = setInterval("showtime()",1000)
timerRunning = true
}
Ich würde somit nichtmals annehmen, dass der Rückgabewert in jeder
Implementierung überhaupt ein numerischer sein muss, schon gar nicht
einer ungleich 0.

Quote:
2) Könnte ich einen mit setTimeout gesetzten Timer auch per
clearInterval stoppen und umgekehrt? Oder sind die beiden Funktionen
wirklich streng getrennt und ich muß damit rechnen, daß eine ID von
setTimeout durchaus denselben Wert wie eine andere ID von setInterval
haben kann?
Aus dem oben gesagten folgt, dass ich nichtmals einen Test für sinnvoll
halte, um dies zu überprüfen. Es ist nirgends festgelegt, also könnte
es von einer Implementierung zur anderen ohne weiteres abweichen.

ciao, dhgm



Reply With Quote
  #3  
Old   
Thomas Mlynarczyk
 
Posts: n/a

Default Re: setTimeout und setInterval - 05-25-2005 , 04:28 AM



Danke für die Antwort. Ich sollte mir also stets merken, ob ich einen Timer
per setInterval oder per setTimeout gestartet habe, und dann die
entsprechende clear-Methode verwenden. Muß ich eigentlich sicherstellen, daß
ich den clear-Methoden nur gültige IDs übergebe, oder würden sie auch
klaglos jeden beliebigen Parametermüll schlucken und dann ggf. einfach
"nichts" machen?



Reply With Quote
  #4  
Old   
Daniel Kirsch
 
Posts: n/a

Default Re: setTimeout und setInterval - 05-25-2005 , 04:58 AM



Thomas Mlynarczyk wrote:
Quote:
Muß ich eigentlich sicherstellen, daß
ich den clear-Methoden nur gültige IDs übergebe, oder würden sie auch
klaglos jeden beliebigen Parametermüll schlucken und dann ggf. einfach
"nichts" machen?
Solange der Parameter ein Integer ist, "schluckt" er das und macht ggf.
nichts. (Zumindest kenne ich keine Implementierung die etwas anderes als
Integer hier verwendet).

Grüße
Daniel


Reply With Quote
  #5  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: setTimeout und setInterval - 05-25-2005 , 06:26 AM



Daniel Kirsch wrote:

Quote:
Muß ich eigentlich sicherstellen, daß
ich den clear-Methoden nur gültige IDs übergebe,
Gemäß der ursprünglichen Netscape-Referenz: ja.

Quote:
oder würden sie auch
klaglos jeden beliebigen Parametermüll schlucken und dann ggf.
einfach "nichts" machen?

Solange der Parameter ein Integer ist, "schluckt" er das und macht
ggf. nichts.
Wobei sich die Frage stellt, wer hier "er" ist. Zwar deckt sich

Quote:
(Zumindest kenne ich keine Implementierung die etwas
anderes als Integer hier verwendet).
dies mit meiner Erfahrung, jedoch ist das DOM-Level-0 und daher
nicht präzise (hier sogar: überhaupt nicht) festgelegt. Man sollte
sich also, gerade wenn man sich dieser Problematik ja bewusst ist,
darauf nicht verlassen. Nach dem Wortlaut der einzigen dazu
existierenden Referenz ist als Argument für clearTimeout() genau
ein Rückgabewert eines zuvor erfolgten Aufrufs von setTimeout()
zulässig, für clear/setInterval() entsprechend.

ciao, dhgm



Reply With Quote
  #6  
Old   
Thomas Mlynarczyk
 
Posts: n/a

Default Re: setTimeout und setInterval - 05-25-2005 , 04:27 PM



Also sprach Dietmar Meier:

Quote:
dies mit meiner Erfahrung, jedoch ist das DOM-Level-0 und daher
nicht präzise (hier sogar: überhaupt nicht) festgelegt. Man sollte
sich also, gerade wenn man sich dieser Problematik ja bewusst ist,
darauf nicht verlassen. Nach dem Wortlaut der einzigen dazu
existierenden Referenz ist als Argument für clearTimeout() genau
ein Rückgabewert eines zuvor erfolgten Aufrufs von setTimeout()
zulässig, für clear/setInterval() entsprechend.
Hm, also werde ich doch lieber ein bißchen mehr Code schreiben und alles
überprüfen.





Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.