Der Martin: setTimeout auf welchen Wert?

Beitrag lesen

Moin Gunnar,

Hypothetische Annahme: Es gibt sinnvolle Anwendungen. ;-)

okay, mal angenommen. ;-)

function foo() {

refreshDisplay();
  window.setTimeout("foo()", 1000);
}


>   
> braucht ja zum Ausführen von `refreshDisplay()`{:.language-javascript} etwas Zeit, sagen wir 42 ms. Der Aufruf von `foo()`{:.language-javascript} – die Aktualisierung der Zeitanzeige – ist also nicht jede Sekunde, sondern alle 1042 ms.  
  
In solchen Fällen tendiere ich dazu, den neuen Aufruf der Funktion schon zu "bestellen", bevor ich die eigentliche Arbeit erledige:  
  

> ~~~javascript

function foo() {  

>   window.setTimeout("foo()", 1000);  
>   refreshDisplay();  
> }

So geht der Zeitbedarf von refreshDisplay() nicht mehr in die Intervallzeit ein. In der wirklichen Welt muss man dann auf mögliche Rekursionen achten; u.U. hat es böse Folgen, wenn die Funktion "sich selbst überholt". Ob das im Zusammenhang mit setTimeout() in einer Browserumgebung auch problematisch ist, weiß ich nicht; ich vermute nein.

Das ändert aber nichts daran, dass ein Browser nun mal keine typische Echtzeitanwendung ist und somit schon vom OS kein garantiertes Zeitverhalten für sich beanspruchen kann. Browserinterne Scripts können sich also noch weniger darauf verlassen, dass Timerfunktionen pünktlich aufgerufen werden. Bei hoher Systemauslastung kann es schon mal sein, dass sich der Aufruf um ein paar Sekunden verspätet.

Daher erscheint es mir müßig, solche Zeitanzeige-Scripts nur der flüssigen Anzeige wegen auf eine Zehntelsekunde oder noch besser zu optimieren.

Schönen Tag noch,

Martin

0 53

sauber?

Gunnar Bittersmann
  • javascript
  1. 0
    Cheatah
    1. 0
      Gunnar Bittersmann
      1. 0
        Cheatah
        1. 0
          Gunnar Bittersmann
          1. 0
            Christian Kruse
            1. 0
              Ashura
              1. 0
                Christian Kruse
                1. 0
                  Ashura
              2. 0
                Gunnar Bittersmann
                1. 0
                  Christian Kruse
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      Christian Kruse
                      1. 0
                        Gunnar Bittersmann
                        1. 0

                          Äquivalent zu <pre>?

                          Der Martin
                          • zu diesem forum
                          1. 0
                            Gunnar Bittersmann
                            1. 0
                              Der Martin
                              1. 0
                                Gunnar Bittersmann
                        2. 0
                          Christian Kruse
                          1. 0

                            Äquivalent zu <pre>?

                            Gunnar Bittersmann
                            • zu diesem forum
                            1. 0
                              Christian Kruse
                              1. 0
                                Gunnar Bittersmann
                                1. 0
                                  Christian Kruse
                2. 0
                  Ashura
          2. 0
            Ashura
          3. 0
            Axel Richter
            1. 0
              Gunnar Bittersmann
              1. 0
                Axel Richter
    2. 0
      Christian Kruse
      1. 0
        Cheatah
        1. 0
          Christian Kruse
          1. 0
            Cheatah
            1. 0
              Christian Kruse
            2. 0
              Der Martin
  2. 0
    Gunnar Bittersmann
    1. 0
      Gunnar Bittersmann
  3. 0

    setTimeout auf welchen Wert?

    Gunnar Bittersmann
    1. 0
      Gunnar Bittersmann
    2. 0
      MudGuard
      1. 0
        Gunnar Bittersmann
    3. 0
      Der Martin
    4. 0
      wahsaga
    5. 0
      Daniel Thoma
      1. 0
        Gunnar Bittersmann
        1. 0
          Gunnar Bittersmann
          1. 0
            Daniel Thoma
          2. 1
            bernd
            1. 0
              Gunnar Bittersmann
              1. 0
                Gunnar Bittersmann
                1. 0
                  bernd
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      Gunnar Bittersmann
                    2. 1
                      bernd