Announcement

Collapse
No announcement yet.

Stoppuhr, Date.now() mit unterschiedlichen Werten

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

  • Iago
    started a topic Stoppuhr, Date.now() mit unterschiedlichen Werten

    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;
    
                    };
    
                }

  • Iago
    replied
    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.

    Leave a comment:


  • Christian Marquardt
    replied
    Ev. meisnt du die Zeile
    interval = setInterval(update,10);

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

    Leave a comment:


  • Iago
    replied
    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?

    Leave a comment:


  • Christian Marquardt
    replied
    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

    Leave a comment:

Working...
X