Announcement

Collapse
No announcement yet.

Stoppuhr, Date.now() mit unterschiedlichen Werten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stoppuhr, Date.now() mit unterschiedlichen Werten

    Hallo, dies ist eine Übung für eine Stoppuhr.

    Ich verstehe nicht, warum offset = Date.now(); innerhalb von this.start und var now = Date.now(); in der Funktion delta() unterschiedliche Werte annimmt (für die Berechnung des Deltas)??
    Es müsste doch zeitgleich aufgerufen werden?? (also gleiche Werte!!) Weiss hier jemand was? Danke.


    Code:
    function stopwatch() {
    
                var isOn = false; 
    
                var time = 0;  //time in milliseconds
                var interval;  
                var offset;        
    
                function update() {    //update is running every 10 milliseconds
    
                    time += delta();    
    
                    console.log(time);
    
                    };
                function delta() {        //calculates time passed
    
                    var now = Date.now();                                                 //<---------------
                    var timePassed = now - offset;  
    
    
                    offset = now;   
                    return timePassed;                  
                    };
    
    
                function timeFormatter() {};
    
    
    
                this.start = function(){
    
                    if(!this.isOn) {
                    interval = setInterval(update,10); 
    
                    offset = Date.now();   //time when the stopwatch starts            //<-----------------
                    this.isOn = true;
    
                    }
    
                     };
    
                this.stop = function(){ 
    
                    if(this.isOn) {
                        clearInterval(interval);
    
                        interval = null;    
                        this.isOn = false;
    
                    }
    
                    };
                this.reset = function(){ 
    
                    time = 0;
    
                    };
    
                }

  • #2
    So richtig verstehe ich die Frage nicht.
    var now ist eine lokale Variable, die nur in der Funktion Delta gültig ist
    offset ist global.
    Beim Start wird offset mit dem aktuellen Datum belegt. In der Funktion Delta wird diese dann - nach der Berechnung von timePassed - wieder auf den aktuellen Wert gesetzt
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Beim Start wird offset mit dem aktuellen Datum belegt. In der Funktion Delta wird diese dann - nach der Berechnung von timePassed - wieder auf den aktuellen Wert gesetzt
      Das verstehe ich schon! Das Delta ist 10 Millisekunden, richtig? Aber warum ist das so? Das lokale now muss ja immer 10 Millisekunden voran sein damit das Delta berechnet werden kann.
      Warum ist das lokale now immer 10 Millisekunden voran?

      Comment


      • #4
        Ev. meisnt du die Zeile
        interval = setInterval(update,10);

        Alle 10 Millisekunden wird update() und damit delta() aufgerufen
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Ev. meisnt du die Zeile
          interval = setInterval(update,10);

          Alle 10 Millisekunden wird update() und damit delta() aufgerufen
          Ok, deswegen ist die Berechnung der Zeit innerhalb delta(), var now = Date.now(); auch 10 Miliksekunden voran, richtig!?


          P.S.: Ich möchte eben wissen, was wann genau passiert, wo welche Werte zu sehen sind, aber da macht es sicherlich Sinn sich in die Konsole einzuarbeiten.
          Zuletzt editiert von Iago; 14.01.2020, 01:51.

          Comment

          Working...
          X