unterschiedlich "schnelle" funktionsaufrufe bei setInterval?
alexander richter
- javascript
0 Cheatah
hallo zusammen,
ich habe ein script für ein navigationsmenü geschrieben, in dem die funktionen zum bewegen der einzelnen haupt- und untermenü-grafiken per window.setInterval (1 millisek.) aufgerufen werden; nun ist es im IE 5.5 so, dass sich die menüs bei anklicken teilweise unterschiedlich schnell bewegen, obwohl ja immer die selben funktionen aufgerufen werden.
woran kann das liegen? (die grafiken werden natürlich alle gleich beim aufrufen der seite geladen)
hat das was damit zu tun, wieviele programme sonst noch so auf meinem rechner laufen?
bei bedarf poste ich auch gern das script, bzw. sende es per email, ich wollte hier jetzt nur nicht das forum zumüllen, das script ist nämlich recht lang (finde ich so als anfänger jedenfalls...)
schon 'mal vielen dank für eure ideen sagt:
alexander
Hi,
window.setInterval (1 millisek.) [...] teilweise unterschiedlich schnell [...]
der Browser/Rechner wird nach besten Fähigkeiten versuchen, Deine Timeout-Zeit einzuhalten; allerdings hat er auch anderes zu tun, als nur auf Dein JavaScript zu warten. Eine Millisekunde ist selbst für neuere Computer verflucht kurz - auf eine derartige Genauigkeit kannst Du Dich niemals verlassen.
Selbst 10ms würde ich noch als "knapp" einstufen.
hat das was damit zu tun, wieviele programme sonst noch so auf meinem rechner laufen?
Auch. Letztlich ist aber bereits die Systemgenauigkeit technisch bedingt nicht 100%ig gegeben. Es ist beispielsweise noch gar nicht so lange her, daß man Intervalle kleiner als eine 18.2tel Sekunde komplett vergessen konnte... so oft wurde nämlich ein bestimmter Interrupt aufgerufen.
Cheatah
aha, so sieht das also aus; vielen dank.
also nächste frage: gibt es denn grundsätzlich auch eine andere möglichkeit (also ohne setInterval oder setTimeout), objekte im fenster pixelweise und mit regelmäßiger geschwindigkeit zu bewegen?
alexander
Hi,
window.setInterval (1 millisek.) [...] teilweise unterschiedlich schnell [...]
der Browser/Rechner wird nach besten Fähigkeiten versuchen, Deine Timeout-Zeit einzuhalten; allerdings hat er auch anderes zu tun, als nur auf Dein JavaScript zu warten. Eine Millisekunde ist selbst für neuere Computer verflucht kurz - auf eine derartige Genauigkeit kannst Du Dich niemals verlassen.
Selbst 10ms würde ich noch als "knapp" einstufen.
hat das was damit zu tun, wieviele programme sonst noch so auf meinem rechner laufen?
Auch. Letztlich ist aber bereits die Systemgenauigkeit technisch bedingt nicht 100%ig gegeben. Es ist beispielsweise noch gar nicht so lange her, daß man Intervalle kleiner als eine 18.2tel Sekunde komplett vergessen konnte... so oft wurde nämlich ein bestimmter Interrupt aufgerufen.
Cheatah
Hi,
also nächste frage: gibt es denn grundsätzlich auch eine andere möglichkeit (also ohne setInterval oder setTimeout), objekte im fenster pixelweise und mit regelmäßiger geschwindigkeit zu bewegen?
nimm einfach längere Intervalle. Das menschliche Auge ist eh nicht geeignet, Bewegungen im Millisekundenbereich zu erfassen - bei Fünfzigstelsekunden wird noch immer ein fließender Ablauf wahrgenommen.
Cheatah
Auch. Letztlich ist aber bereits die Systemgenauigkeit technisch bedingt nicht 100%ig gegeben. Es ist beispielsweise noch gar nicht so lange her, daß man Intervalle kleiner als eine 18.2tel Sekunde komplett vergessen konnte... so oft wurde nämlich ein bestimmter Interrupt aufgerufen.
Genau das mit der 18tel Sekunde ist schätzungsweise immer noch der Fall, daher rührt auch immer noch die ungenauigkeit so mancher Systemuhr... :-(.