Ankündigung

Einklappen
Keine Ankündigung bisher.

Timer kann nicht abgebrochen werden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Timer kann nicht abgebrochen werden

    Hey!

    Ich möchte gerne via Javascript einen Interval beenden um dann den selben Interval mit etwas anderem wieder zu starten..
    Das ganze sieht ca so aus:

    Code:
    function loadgebaeude(dorfid, id)
    {
        clearInterval(housetimer);
        loadhouse(dorfid, id);
        var housetimer = setInterval('loadhouse('+dorfid+', '+id+')', 3000);
    }
    Nun macht dieser clearInterval jedoch leider nicht ganz was ich will.. es passiert nämlich gar nichts und wenn ich ein anderes Gebäude laden möchte wechselt er sich dann immer zwischen beiden Timern ab.

    Danke schonmal!

  • #2
    Warum nicht setTimeout statt setInterval?

    Kommentar


    • #3
      Weil nebenbei zum Beispiel der Ausbau eines Gebäudes fertig werden kann und dann der nächste Ausbau freigeschaltet wird und ich möchte nicht das man die Seite aktualisieren muss um das zu sehen.. Sonst zählt auf der linken Seite des Bildschirms ein Timer herunter und sobald er bei 0 ist musst du erst die Seite aktualisieren um weiter machen zu können

      Kommentar


      • #4
        Zitat von saschalois Beitrag anzeigen
        Weil nebenbei zum Beispiel der Ausbau eines Gebäudes fertig werden kann und dann der nächste Ausbau freigeschaltet wird und ich möchte nicht das man die Seite aktualisieren muss um das zu sehen.. Sonst zählt auf der linken Seite des Bildschirms ein Timer herunter und sobald er bei 0 ist musst du erst die Seite aktualisieren um weiter machen zu können

        Und warum spricht das gegen setTimeout?
        https://jsfiddle.net/y1wv2hwq/

        setInterval erzwingt die Ausführung. Mit setTimeout kann die Ausführung des nächsten setTimeout verzögert werden, wenn ein Prozess etwas länger braucht. Beispielsweise bei sich wiederholenden Ajax-Requests:

        https://jsfiddle.net/y1wv2hwq/1/

        Kommentar


        • #5
          Zitat von rkr Beitrag anzeigen


          Und warum spricht das gegen setTimeout?
          https://jsfiddle.net/y1wv2hwq/

          setInterval erzwingt die Ausführung. Mit setTimeout kann die Ausführung des nächsten setTimeout verzögert werden, wenn ein Prozess etwas länger braucht. Beispielsweise bei sich wiederholenden Ajax-Requests.
          Also ich habs jetzt mit einem interval geschafft aber so wie du das hier schreibst wäre denke ich ein setTimeout wirklich besser

          Kommentar


          • #6
            Ist housetimer eine globale Variable?

            nein, Du definierst diese lokal und nach Verlassen der Funktion ist sie futsch...

            Kommentar


            • #7
              Zitat von kaminbausatz Beitrag anzeigen
              Ist housetimer eine globale Variable ?
              Nein

              Kommentar


              • #8
                ja also clearInterval(housetimer); - Deine Funktion kennt housetimer nicht....

                Kommentar


                • #9
                  Zitat von kaminbausatz Beitrag anzeigen
                  ja also clearInterval(housetimer); - Deine Funktion kennt housetimer nicht....
                  Ok ich dachte mir sowas in der Art ^^ wo erstell ich die am besten? einfach im Head Bereich:
                  Code:
                  <script type='text/javascript'>
                  var housetimer = 0;
                  </script>
                  ?


                  bzw darf ich wenn ich die dann verändern möchte wieder var housetimer = ... machen oder muss ich dann housetimer = ... machen? Also mit oder ohne "var" ?

                  Kommentar


                  • #10
                    Globale Variablen sind böse. Bleib am besten in einem eigene Scope.

                    Schreibe JavaScript-Code außerdem nur in JavaScript-Dateien und nicht in den HTML-Code.

                    Code:
                    (function () {
                        var houseTimer;
                    
                        function loadBuilding(villageId, id) {
                            clearInterval(houseTimer);
                            loadHouse(villageId, id);
                            housetimer = setInterval(function () {
                                loadHouse(villageId, id)
                            }, 3000);
                        }
                    
                        loadBuilding(123, 456);
                    })();
                    Und bitte lass die furchtbare Vermischung aus Englisch und Deutsch bleiben.

                    Kommentar


                    • #11
                      Zitat von hellbringer Beitrag anzeigen
                      Globale Variablen sind böse. Bleib am besten in einem eigene Scope.

                      Schreibe JavaScript-Code außerdem nur in JavaScript-Dateien und nicht in den HTML-Code.

                      Code:
                      (function () {
                      var houseTimer;
                      
                      function loadBuilding(villageId, id) {
                      clearInterval(houseTimer);
                      loadHouse(villageId, id);
                      housetimer = setInterval(function () {
                      loadHouse(villageId, id)
                      }, 3000);
                      }
                      
                      loadBuilding(123, 456);
                      })();
                      Und bitte lass die furchtbare Vermischung aus Englisch und Deutsch bleiben.
                      Herzlichen Dank

                      Ja das mit dem vermischen von Englisch und Deutsch is so ne Sache bei mir ^^ Ich versuchs zu vermeiden aber wenn ich schnell am schreiben bin denk ich oft nicht ausreichend nach und nehm das erste was mir einfällt xD

                      Kommentar

                      Lädt...
                      X