Ausbrechen der setTimeout-Schleife

8

Ich habe Probleme, aus einer setTimeout-Schleife auszubrechen.

%Vor%

Ich habe gelesen wie 100 setTimeout bezogene Beiträge, aber kann dies nicht herausfinden.

bearbeiten:

Lass mich ein bisschen klarstellen, wenn ich versuche, das zu erreichen.

Mein Spiel hat 75 Runden, jeder Zug sollte ungefähr 500ms dauern, während dieser Runde möchte ich prüfen, ob eine Bedingung erfüllt ist und ankündigen, dass der Spieler gewonnen hat, nachdem der Spieler gewonnen hat, besteht keine Notwendigkeit, den Rest des Spiels fortzusetzen wendet sich.

    
Martijn 20.01.2014, 17:52
quelle

4 Antworten

14

Anstatt alle diese Timer zu setzen, erstellen Sie einen kontinuierlichen Timer mit setInterval :

%Vor%

Wenn deine Runde 500ms dauern soll, ändere diese letzte 100 in 500 .

    
Joseph Silber 20.01.2014, 17:56
quelle
11

Sie sollten keine for-Schleife verwenden, nur ein rekursives setTimeout

setInterval passt nicht für so viele Dinge:

  • Wenn ein Fehler auftritt, können Sie den Zug nicht anhalten.
  • Wenn Sie verschiedene Ausführungszeitschritte benötigen.
  • Wenn Sie Daten innerhalb der Kette übergeben müssen.
  • Wenn Sie etwas asynchron machen müssen.
  • Und das Schlimmste - SETINTERVAL GARANTIERT KEINE AUSFÜHRUNG
  • Also benutze es nur, wenn du weißt, was du tust!

Lösung:

%Vor%

Sie können es in node.js ausführen, wenn Sie überprüfen möchten, wie es funktioniert:

%Vor%     
Ilan Frumer 20.01.2014 18:00
quelle
1

Ich denke, es wäre besser, wenn Sie setInterval anstelle von setTimeout verwenden.

Und um beide zu löschen, weisen Sie sie einer Variablen zu und löschen das Zeitlimit mit

%Vor%     
Santiago Rebella 20.01.2014 17:58
quelle
0

Hier ist ein Beispiel dafür, was Sie schreiben sollten

%Vor%

Eine andere einfachere Problemumgehung ist ein Aufruf nur setTimeout , wenn table.game.playerWon falsch ist.

%Vor%

Hoffe es hilft

    
php-dev 20.01.2014 17:56
quelle

Tags und Links