Heim >Web-Frontend >js-Tutorial >Ein Überblick über JavaScript -Versprechen - SitePoint
Dieses Tutorial untersucht JavaScript Versprechen, ein leistungsstarkes Tool zur Verwaltung asynchroner Operationen. Wir werden die Erstellung von Versprechen, Verketten, Fehlerbehandlung und erweiterte Methoden abdecken.
Schlüsselkonzepte:
new Promise((resolve, reject) => { ... })
Konstruktor initiiert ein Versprechen. resolve
Signaler Erfolg, reject
signalisiert Misserfolg. .then()
: nacheinander asynchrone Aufgaben mit .then()
ausführen. Jedes .then()
erhält das Ergebnis des vorhergehenden Versprechens. .catch()
: Fehler verwalten mit .catch()
, die Ablehnungen überall in der Kette behandeln. .finally()
: Code ausführen, unabhängig von der Erfüllung oder Ablehnung mit .finally()
. Ideal für Reinigungsaufgaben. Promise.all
, Promise.race
, Promise.any
und Promise.allSettled
bieten anspruchsvolle Möglichkeiten, mehrere Versprechen zu verwalten. Beyond Callbacks ("Callback Hell"):
Vor den Versprechen wurden Rückrufe für asynchrone Operationen verwendet. Verschachtelte Rückrufe (Callback Hell) führten zu komplexen, schwer zu machtenden Code. Versprechen bieten eine sauberere, lesbarere Alternative.
Erstellen eines Versprechens:
Ein einfaches Beispiel für Versprechen:
<code class="language-javascript">const myPromise = new Promise((resolve, reject) => { // Asynchronous operation (e.g., network request) setTimeout(() => { const success = true; // Simulate success or failure if (success) { resolve("Operation successful!"); } else { reject("Operation failed!"); } }, 1000); });</code>
Verwenden Sie .then()
und .catch()
:
<code class="language-javascript">myPromise .then(result => console.log(result)) // Handles successful resolution .catch(error => console.error(error)); // Handles rejection</code>
Versprechenketten:
Kettenversprechen für die sequentielle Ausführung:
<code class="language-javascript">myPromise .then(result => { console.log(result); return anotherPromise(); // Return another promise to continue the chain }) .then(nextResult => console.log(nextResult)) .catch(error => console.error(error));</code>
.finally()
Für die Reinigung:
<code class="language-javascript">myPromise .then(result => console.log(result)) .catch(error => console.error(error)) .finally(() => console.log("Promise settled")); // Always runs</code>
Erweiterte Methoden:
Promise.all([promise1, promise2, ...])
: wartet auf alle Versprechen zu lösen. Lehnt ab, wenn ein Versprechen ablehnt. Promise.allSettled([promise1, promise2, ...])
: wartet auf alle Versprechen, sich zu regeln (auflösen oder ablehnen), und gibt ein Array von Ergebnissen zurück. Promise.any([promise1, promise2, ...])
: löst sich mit dem Ergebnis des ersten Versprechens zur Lösung auf. Lehnt ab, wenn alle Versprechen ablehnen. Promise.race([promise1, promise2, ...])
: löst oder ablehnt das Ergebnis des ersten Versprechens zur Einrichtung.
async/await
(syntaktischer Zucker):
async/await
<code class="language-javascript">const myPromise = new Promise((resolve, reject) => { // Asynchronous operation (e.g., network request) setTimeout(() => { const success = true; // Simulate success or failure if (success) { resolve("Operation successful!"); } else { reject("Operation failed!"); } }, 1000); });</code>
den richtigen Ansatz auswählen:
async/await
: häufig gestellte Fragen:
Promise
.then()
.catch()
Was ist .finally()
? .then()
Es ist eine sauberere Syntax für die Arbeit mit Versprechen. Promise.all
und durch tatsächliche Bild -URLs zu ersetzen, wenn Sie Bilder einfügen möchten. Das obige ist der detaillierte Inhalt vonEin Überblick über JavaScript -Versprechen - SitePoint. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!