Nein, ich habe geklärt, spielst du Schach?
Fallen Sie erneut, weil Sie festgestellt haben, dass es sich um ein Schnellauffrischungsmodul handelt.
Ich werde mich mit dem Konzept der Nichtaufzeichnung befassen und so mit einem synchronen Code arbeiten.
Und dafür müssen wir zunächst verstehen, was asynchroner Code ist.
Angenommen, ich setze einen Timer mit eingestelltem Timeout, eine in Knoten J integrierte Funktion.
S da.
Wir definieren eine Funktion, die nach Ablauf eines bestimmten Timers ausgeführt werden soll.
Hier verwende ich eine Pfeilfunktion.
Sie können eine benannte Funktion verwenden, was immer Sie möchten.
Das zweite Argument ist der Timer.
Sagen wir zwei Sekunden.
Sie drücken es in Millisekunden aus.
Zwei Sekunden sind also zweitausend Millisekunden.
Alles einfach verschlossen.
Timer ist fertig.
Wenn ich diese Datei jetzt zwei Sekunden lang ausführe, passiert nichts und dann sehen wir, dass Taimur fertig ist.
Dies ist nun asynchroner Code, da er nicht sofort beendet wird und es sogar ein Sendecode wäre, wenn
wir dort eine Millisekunde hätten.
Wenn es also superschnell ist, passiert es nicht sofort in unserem Codeschritt.
Es ist wie wenn wir eine Konsolensperre haben.
Hallo.
Und Konsolenprotokoll.
Hallo, diese beiden Snippets sind Synchronoss-Code, da sie direkt nacheinander ausgeführt werden, und technisch gesehen wird
Noad natürlich einige Zeit brauchen, um sie auszuführen.
Es gibt jedoch keine andere Verzögerung als Ihre Hardware.
Sozusagen und damit ein Synchronoss-Code.
Dies ist ein kranker Code, der asynchron ist, da er nicht sofort ausgeführt oder beendet wird.
Es dauert ein wenig, auch wenn das super kurz ist.
Und in der Tat, wenn ich diese Datei so ausführe, sehen Sie helo und high, bevor Sie sehen, dass Taimur
fertig ist, obwohl es superschnell ist, weil kein G. S. und JavaScript blockiert im Allgemeinen Ihre Codeausführung erst, wenn
dies erledigt ist.
In der Tat wird hier diese sogenannte Rückruffunktion erkannt.
Eine Funktion sollte also ausgeführt werden.
In Zukunft sollte es später zurückrufen, sobald es fertig ist.
Sobald dieser Timer hier abgelaufen ist, erkennt er dies nur und geht sofort zur nächsten Zeile
über. Er führt den gesamten synchronen Code aus und führt dann Ihren asynchronen Code aus.
Sobald dies erledigt ist, sehen wir, wie niedrig und hoch zuerst, obwohl in unserem Code die Zeit zuerst
gedruckt wird.
Und das ist ein entscheidendes Konzept, das Sie in JavaScript und insbesondere in Node verstehen müssen.
Und ich werde während des gesamten Kurses darauf zurückkommen, weil es so wichtig ist.
Wenn Sie jetzt mit Schulden arbeiten und alles auf zwei Sekunden ansteigt, um es noch klarer zu machen, werden Sie
wieder sehen, dass unser Synchronisierungscode ausgeführt wird.
Nach zwei Sekunden wird dieser Code ausgeführt.
Wenn wir mit asynchronem Code arbeiten, erhalten wir mehrere Techniken, mit denen wir gut umgehen können.
Die Rückruffunktion ist eine, die älteste, und Sie werden sie ziemlich oft sehen, insbesondere Hinweis G. S ..
Es ist nichts falsch daran, aber Sie werden auf ein Problem stoßen, wenn Sie einige abhängige asynchrone Operationen haben.
Also stellen wir hier den Timer ein.
Angenommen, ich erstelle eine andere Funktion.
Welches ich Fetch Data nennen werde.
Und dort werde ich auch nur einen Timer einstellen, weil ich keine Datenbank oder ähnliches einrichten möchte, von der wir
Daten abrufen, wir werden das alles für alle Kurse tun.
Na sicher.
Keine Sorge.
Also hier habe ich wieder einen Timer, der ungefähr eineinhalb Sekunden dauert.
Und jetzt hier in Fetch Data brauche ich eine Möglichkeit, etwas zu tun.
Wann ist der innere Timer fertig?
Hier erwarte ich also tatsächlich ein Argument, das ich zurückrufen werde, da dieses Argument eine Funktion sein
wird.
Ich werde hier irgendwann meine innere Funktion aufrufen, sobald ich mit dem Timer fertig bin.
Und dort kann ich passieren.
Fertig als Wert, der den Ort kennt, an dem eine Verwendung Daten abruft.
Nehmen wir an, das gehört zu diesem Set.
Zeit.
Anruf.
Ich rufe dort solche Abrufdaten auf.
Ich muss jetzt bestehen und nie wieder zurückrufen.
Und hier.
Ich werde den vom Rückruf übergebenen Text in meiner Funktion erhalten, wenn er ausgeführt wird.
Also bekommen wir hier Text und ich kann diesen Text auf der Konsole sperren.
Nun, das mag am Ende hier verwirrend aussehen. Ich erstelle meine eigene Funktion, die einen Rückruf erhält,
damit ich eine Funktion definieren kann, die ausgeführt werden soll, wenn dieser innere Timer von einem anderen Ort aus ausgeführt wird.
Von hier aus ist also die Funktion, die effektiv als Rückruf übergeben wird.
Und ich führe diese Funktion hier aus.
Nun, wenn ich das speichere, läuft das.
Dauert zwei Sekunden, dann ist diese Zeit des Timers abgelaufen.
Und dann nach anderthalb Sekunden sehe ich fertig.
Wenn wir nun wie hier ein paar verschachtelte asynchrone Aufrufe haben, gehen wir aus Rückrufperspektive immer
tiefer.
Und deshalb haben wir immer eine Funktion namens Promises, die wir verwenden können.
Keine Chance.
Jetzt verwenden wir häufig Pakete von Drittanbietern, die bereits Versprechen für uns verwenden.
Die Syntax, die ich Ihnen jetzt zeigen werde, ist eine, die Sie selten selbst schreiben müssen.
Das erledigen die Pakete hinter den Kulissen.
Immer noch schön zu wissen, dass Sie ein Versprechen machen.
Innerhalb unserer abgerufenen Datenfunktion sind Sie beispielsweise.
Indem Sie es in einer Konstanten oder Variablen speichern und dann das neue Schlüsselwort verwenden, das Sie in JavaScript verwenden, um
ein neues Objekt basierend auf einem Konstruktor zu erstellen.
Wenn Konstruktorfunktionen etwas sind, das Ihnen nichts sagt.
Schauen Sie sich einige grundlegende Einführungsressourcen in JavaScript an, da Konstruktorfunktionen eine Kernfunktion in JavaScript
sind.
Und hier verwendete er die Versprechen-Konstruktor-Funktion, die in JavaScript und kein G eingebaut ist. S ..
Und nimmt eigentlich auch einen Rückruf entgegen, der zu Argumenten führt, auflöst und ablehnt.
Sie können sie benennen, wie Sie möchten, aber dies sind zwei Funktionen.
Und der erste erfüllt das Versprechen erfolgreich.
Es löst es erfolgreich auf.
Der zweite lehnt es ab, was wie ein Fehler ist.
Sie nehmen dann Ihren asynchronen Code und verschieben ihn dort hinein.
Und wieder müssen Sie dies selten selbst schreiben.
Die meisten Pakete erledigen das bereits für Sie und geben Ihnen das fertige Versprechen, das die ganze Magie hinter den
Kulissen ausübt, die Ihnen verborgen bleiben.
Hier machen wir es manuell.
Also jetzt und Papa ruft zurück.
Wir haben unseren eigenen Funktionssatz.
Auszeit gibt uns leider keine Versprechen API.
Hier müssen wir also alle einen Rückruf verwenden.
Aber in ihren.
Wir wissen jetzt, dass wir keine Rückruffunktion mehr verwenden, die wir erhalten.
Ich bekomme hier kein Argument mehr und habe keine Daten mehr abgerufen.
Stattdessen beschließe ich hier.
Fertig, sagen wir mal.
Also bin ich erfolgreich zurückgekehrt, um den Wert jetzt in Abrufdaten aufzulösen.
Nachdem wir das Versprechen definiert haben, müssen wir es nur zurückgeben.
Und bitte beachten Sie, dass dies synchroner Code ist.
Tatsächlich wird dies sofort zurückgegeben, nachdem das Versprechen erstellt wurde, bevor es im Versprechungslauf codiert wird.
Dies wird einige Zeit später geschehen, wenn wir diese Funktion tatsächlich aufrufen.
Und wenn diesmal Odyn fertig ist.
Also geben wir dieses Versprechen jetzt hier zurück.
Und an der Stelle, an der wir abgerufene Daten aufrufen, geben wir jetzt keinen Rückruf mehr weiter.
Aber wir können jetzt dann verwenden, was auf ein Versprechen abrufbar ist und wir geben ein Versprechen zurück.
Und dies ermöglicht es uns einfach, hier eine so genannte Funktion zu definieren, die ausgeführt wird, sobald das Versprechen
gelöst ist.
Was ist nun der Vorteil davon?
Wenn wir mehrere solcher Versprechen hätten.
Sagen wir also nochmal einen kalten Abruf von Daten und da muss ich dann dann nicht mehr so verwenden.
Und deshalb würde ich mit verschachtelt enden.
Wieder Rückrufe.
Aber stattdessen ist innerhalb eines Versprechens und dann Blockieren Teil eines Versprechens.
Ich kann einfach ein neues Versprechen zurückgeben und dann den nächsten Block nach dem vorherigen hinzufügen.
So was.
Jetzt haben wir eine Kette und blockieren dann.
Dieser wird beim ersten Versprechen angerufen, dann gebe ich im Then-Block ein weiteres Versprechen zurück.
Und selbst wenn uns das keinen vielversprechenden Anreiz geben würde.
Wenn Sie die Rückgabe blockieren, wird sie in ein Versprechen umgewandelt, das sofort aufgelöst wird.
Und dann fügen wir einen weiteren then-Block hinzu, der sich jetzt hier auf dieses Versprechen bezieht.
Und dies ist besser lesbar als unendlich verschachtelte Rückrufe.
Wenn ich jetzt renne, sehen wir.
Hallo.
Der Timer ist fertig.
Wir sind fertig.
Und wir sehen es wieder, weil ich zweimal Abrufdaten aufrufe.
Es könnte also schwierig sein, den Kopf zum ersten Mal herumzuwickeln.
Wir werden es wiederverwenden.
Hat diesen Kurs durchbrochen und dass es klarer wird.
Auch dieser Code wird größtenteils nicht von Ihnen geschrieben, aber es ist ein entscheidendes Konzept, das unseren asynchronen Code
übersichtlicher macht.
Es gibt immer eine andere Möglichkeit, diese Asynchronität zu verwalten.
Warten Sie auf zwei spezielle Schlüsselwörter, die Sie in modernem JavaScript verwenden können, und ich werde gegen Ende des Kurses
einen separaten Abschnitt dazu haben.
Ich möchte es hier vorstellen, weil es hier verwirrender sein kann als diese Syntax.
Und ich möchte mich an diesen halten.
Führen Sie hier nicht zu viele neue Funktionen gleichzeitig ein.
Async-Code muss man allerdings verstehen.
Und wenn es bis jetzt nicht ganz klar ist, ist das in Ordnung, obwohl Sie es für einen veränderten Kurs ein
paar sehen werden, weil wir viele asynchrone Ereignisse ohne Chance haben.
Und ich werde das mehrmals erklären.
Ich werde auch noch einmal Versprechen erklären.
Ich möchte nur sicherstellen, dass Sie dies inzwischen gesehen haben und dann die Möglichkeit haben, dies zu verstehen, wie
es funktioniert und wie wir damit umgehen.