Philipp Hasenfratz: Wecker in Javascript

Beitrag lesen

Halihallo Michi

if (stunde == weckerhrs && minute == weckermin){
Also mein Code läuft, es geht mir eigentlich nur ums prinzip...ob das so in Ordnung geht.

Neben dem von Bio gesagten, was natürlich vollkommen richtig ist,
wollte ich dennoch ein kleines Problem in deinem Code erwähnen:

Tja, 1000ms warten ist nicht immer 1000ms genau. Sei es, dass der
Browser-Prozess mal weniger Priorität hat, sei es, dass die
Festplatte oder andere IO-Operationen gerade ekzessiv benutzt werden,
sei es, dass der JavaScript-Interpreter auch Zeit braucht die Befehle
auszuwerten... Lange Rede kurzer Sinn: Bei wiederholten setTimeout()
Befehlen gibt es "Verschiebungen", welche u.U. dazu führen, dass
plötzlich eine Sekunde "verloren geht". Falls diese Sekunde genau
jene ist, wo der Alarm gesetzt wurde, wird der Alarm nie, oder
mindestens einen Tag später ausgelöst.
Falls also schon jede Sekunde geprüft wird, muss umbedingt *nicht*
auf Gleichheit, sondern auf "Grösser als" geschaut werden. Natürlich
muss der Alarm - wenn er einmal ausgelöst wurde - "deaktiviert"
werden, sonst kommt er ja jede Sekunde wieder und so möchte man ja
am Morgen nicht aus dem Bett geholt werden ;)

Ich würde jedoch stark empfehlen Bio's Vorschlag umzusetzen, dies
hier war einfach zu deiner Information. Ein setTimeout() mit
passender Anzahl Sekunden bis zum Alarm, dürfte auf den meisten
Browsern genauer und vorallem zuverlässiger sein.

Viele Grüsse

Philipp

--
M$: Patches - don't.