Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie springe ich zur nächsten Ausführung in einer setInterval Schleife?

Einklappen

Neue Werbung 2019

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

  • Wie springe ich zur nächsten Ausführung in einer setInterval Schleife?

    Liebes PHP.de Forum,

    Ich möchte einen Chat mit JavaScript programmieren. In diesem Chat soll eine setInterval Schleife immer wieder nach 3 Sekunden ein Skript ausführen, welches auf neue Nachrichten prüft. Wenn allerdings keine neuen Nachrichten vorhanden sind, soll das Skript pausiert und nach 3 Sekunden erneut ausgeführt werden.

    Da setInterval eine Schleife ist, wundere ich mich ziemlich, warum die Kommandos break und continue nicht funktionieren. Gibt es irgendeine Möglichkeit, einfach zur nächsten Ausführung zu springen, anstatt diesem Code?
    Code:
    $(document).ready(function(){
                    setInterval(suchen, 3000)
    });
    function suchen () {
                    // Code
                    if (nachrichten.length == 0) {
                    // Code
                    } else {
    
                    }
    }
    Vielen Dank im Voraus!


  • #2
    setInterval() ist keine Schleife, sondern eine Funktion, die in einem bestimmten Intervall eine andere Funktion ausführt. Deswegen gibts auch nichts zu "springen".

    Sekunde 3: Funktion wird ausgeführt
    Sekunde 6: Funktion wird ausgeführt
    Sekunde 9: Funktion wird ausgeführt
    usw.

    Kommentar


    • #3
      Hallo hellbringer,

      Das heißt, dass es nur mit meinem obrigen Beispiel geht?

      Kommentar


      • #4
        Für einen Chat ist Polling nicht unproblematisch, gerade wenn mehrere User die Anwendung verwenden erzeugt man schnell viel Last, welche eigentlich Sinnlos ist da es keine neuen Daten gibt. Ich würde dir hier WebSockets nahlegen.

        Aber zu deinem konkreten Problem:
        Du könntest setTimeout verwenden und deine eigene Funktion hiermit aufrufen.
        Code:
        function test() {
          if (nachrichten.length == 0) {
            setTimeout(test, 3000); // 3 Sekunden
          } else {
           setTimeout(test, 5000); // 5 Sekunden
        }

        Kommentar


        • #5
          die funktion suchen legt erstmal nahe, dass die ausführung zeit brauchen kann, dazu einen exelenten artikel von john resig:
          https://johnresig.com/blog/how-javascript-timers-work/

          Kommentar

          Lädt...
          X