Wir haben jetzt unser einfaches, kleines, gealtertes Frauenspiel zusammengestellt.
Wenn ein Benutzer mehr als fünf Mal auf die Schaltfläche klickt, wird davon ausgegangen, dass er eine hat.
Sonst haben sie verloren.
Das Spiel funktioniert also definitiv so wie es jetzt ist.
Aber ich habe am Ende des letzten Abschnitts angefangen, diesen Fall zu formulieren, dass die Art, wie wir dieses
Spiel geschrieben haben, vielleicht nicht die beste der Welt war.
Ich habe den Fall rausgeworfen, in dem wir das Spiel von einem anderen Entwickler ausführen lassen könnten.
Es ist gut so, als wollten wir dieses Ding als Funktion oder als eigenständiges Paket veröffentlichen.
Ein anderer Entwickler könnte also das Spiel ausführen, und dann müssten wir ihm die Möglichkeit geben, festzulegen, was
zu tun ist, wenn der Benutzer das Spiel erfolgreich abgeschlossen hat oder nicht.
Wenn ich dies in gewisser Weise aus der Perspektive eines Diagramms betrachte, ist dies, was ich vorschlage.
Ich sage, dass ich genau die gleiche Spielerfahrung haben möchte, aber ich möchte die gesamte Spielelogik
in einer einzigen Funktion zusammenfassen, die durch diesen blauen oder cyanfarbenen Hintergrund dargestellt wird.
Ich möchte dann zulassen, dass ein anderer Entwickler das Spiel startet und genau spezifiziert, was geschehen soll, wenn
der Benutzer das Spiel erfolgreich bestanden hat oder im Spiel versagt.
Mit anderen Worten, ich möchte unsere aktuelle Codebasis alles, was dieses Spiel darstellt, in eine einzige
Funktion umwandeln, in der ein anderer Entwickler angeben kann, was nach dem Spiel zu tun
ist.
Also machen wir diesen Refaktor.
Und dann werden wir das Thema der Versprechungen vorstellen und herausfinden, wie sie funktionieren.
Also kehre ich zurück zu meinem Code und nur, um zu beginnen, werden wir ein wenig
Refactor machen, um unser gesamtes Spiel zunächst in eine eigenständige Funktion zu bringen.
Ganz oben unter dem Skript-Tag werde ich eine Funktion namens Starts Spiel deklarieren.
Ich werde eine öffnende geschweifte Klammer setzen.
Ich werde meine gesamte Spielelogik übernehmen.
Ich werde einmal einziehen und diese geschweifte Klammer abschließen.
Unten hier unten ist es jetzt mein gesamtes Spiel in diesem Start eingepackt.
Spielfunktion.
Nun ist es mir irgendwie gelungen, meine gesamte Spielelogik in eine Standalone-Funktion zu integrieren, aber diese Standalone-Funktion kapselt
immer noch, was im Erfolgs- und Fehlerfall zu tun ist, nur um sicherzustellen, dass alles
noch ordnungsgemäß funktioniert.
Ich werde einen Aufruf hinzufügen, um das Spiel unterhalb der Funktionsdeklaration zu starten.
Also hier unten werde ich Start-Spiel so nennen.
Und jetzt zurück in Chrome werden wir das Dokument aktualisieren und sicherstellen, dass alles noch funktioniert.
Also hier sind wir alle auffrischen wird warten die zwei Sekunden und OK alles für das
Spiel funktioniert immer noch wie erwartet.
Unser Code, so wie er jetzt steht, funktioniert wieder, aber wir bieten keine gute Schnittstelle
für andere Entwickler, die Start-Spiel aufrufen möchten.
Das ist das ganze Ziel hier.
Ich möchte irgendwie angeben, was zu tun ist, wenn der Benutzer gewinnt.
Wann immer ich Start Game nenne, werden wir die Idee von Versprechen, die jetzt versprochen werden, einführen.
Ich habe den Entwicklern viele Male erklärt und durch jedes Mal genau erklärt, wie sich
Prozesse verhalten.
Ich habe herausgefunden, dass genau das, was Ihnen sagt, wie sie funktionieren, kein Wissen über Versprechen
vermittelt.
Mit anderen Worten kann ich hier sitzen und den ganzen Tag über das Versprechen eines Vortrags sprechen, aber es übersetzt nicht ganz.
Man muss diese Dinge wirklich in Aktion sehen.
Wir werden also folgendes tun.
Anstatt mich hier sitzen zu lassen und ununterbrochen über Versprechen zu sprechen, werden wir einfach unseren Code umgestalten, um ein Versprechen
zu nutzen, und wenn wir es erst einmal gemacht haben, werden wir einige Beobachtungen darüber machen,
wie es genau ist funktioniert.
OK.
Also machen wir zuerst den Reaktor.
Es wird ein bisschen mysteriös sein, aber dann reden wir genau darüber, wie es funktioniert.
Um unseren Code für Versprechen umzuwandeln, lösche ich die gesamte innere Zeitüberschreitungsaussage. Der einzige Grund, aus dem ich ihn lösche,
ist, dass ich dieses Ding von Grund auf neu schreiben
möchte, um sicherzustellen, dass es wirklich klar ist Sie genau, was los ist.
An Orten, an denen die Zeit abgelaufen ist, werde ich ein neues Versprechen schreiben und feststellen, dass ich hier ein Kapital
P verwende.
Ich werde dann diese Versprechungsfunktion oder diese Versprechungssache weitergeben, was auch immer es hier ist, eine
dicke Pfeilfunktion.
OK.
Also habe ich einfach ein Fett oder eine Funktion so übergeben.
Immer wenn ich ein neues Versprechen erkläre, wird diese innere Funktion, die ich an sie weitergebe, mit
zwei Argumenten aufgerufen: Auflösen und Ablehnen.
Wenn Sie jetzt die gleiche oder fast exakt die gleiche Logik einsetzen, die wir mit der
eingestellten Timeout-Zeit hatten, sage ich set.
Auszeit.
Ich werde es als zweites Argument eine Funktion übergeben.
Ich sage 2000 Millisekunden.
Dann können wir innerhalb des eingestellten Timeouts sagen, ob der Zähler größer als 5 ist, und hier
werden die Dinge interessant, anstatt irgendetwas über Alarm oder ähnliches zu sagen. Ich werde mir dieses Argument
ansehen.
Dieses entschiedene Argument nenne ich es noch einmal.
Ich weiß, dass ich eine Menge Code bekomme, der so geheimnisvoll aussieht, aber mich erträgt.
Wir werden die Implementierung hier abschließen und dann darüber sprechen, was genau jetzt in den L-Anweisungen passiert,
wie dies bei einem Benutzer der Fall ist.
Ich wollte einen Anruf hinzufügen, um jetzt ein letztes kleines bisschen abzulehnen.
Ein letztes bisschen hier unten, wo ich anrufe, fange das Spiel erneut an oder verschiebe das
Semikolon am Ende und stattdessen werde ich es durch eine neue Linie ersetzen.
Dann werde ich dann eine Funktion übergeben, in der ich Sie benachrichtigen werde, wenn und dann noch eine letzte Sache.
Eine Sache weniger bei mir.
Der ganz unten.
Danach füge ich einen Haken hinzu und alarmiere dich, dass du verloren hast.
OK, so viele Änderungen, wir haben gerade viele Änderungen vorgenommen und die Chancen stehen viel, es sieht ein bisschen komisch aus.
Absolut in Ordnung.
Total was ich erwarte.
Lassen Sie uns dies zuerst in unserem Browser ausführen und überprüfen, ob alles funktioniert, und wir werden darüber sprechen,
was hier genau passiert.
Wir werden also sicherstellen, dass ich zuerst das Dokument speichere, damit alles gespeichert ist.
Wechseln Sie zurück zu Chrome, aktualisieren Sie das Dokument oder klicken Sie auf die Schaltfläche.
Ich glaube, ich habe nicht genug gekocht, weil ich dich zuletzt gesehen habe.
Lassen Sie uns hier einen Gewinnerfall bekommen.
Klicken Sie auf Klick und Sie gewinnen.
Denken Sie daran, dass Sie zum Neustarten des Spiels die Browser-Aktualisierung aktualisieren müssen.
Klicken Sie auf Klicken und ich gewinne.
OK.
Also funktioniert hier eindeutig etwas.
Offensichtlich funktioniert noch etwas, aber was zum Teufel ist dieses Versprechen.
Was ist das gelöst und lehnen Sie ab, was dieser Van ist und nicht unten fangen.
Lass uns eine kurze Pause machen.
Wir werden zurückkommen, um genau zu sagen, wie die Versprechen funktionieren, und dann sind wir mit der Auffrischung der
Versprechen fertig.
Nur noch ein Abschnitt wird mit unserer Aktualisierung abgeschlossen.
OK.
Wir sehen uns in einer Sekunde.