Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Die Struktur von Promise (JavaScript) und wie man damit arbeitet

Beitrags-Cover: Die Struktur von Promise (JavaScript) und wie man damit arbeitet
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
```html
Promise — ist ein Objekt, das das Ergebnis einer asynchronen Operation darstellt. Sie ermöglichen es, mit verzögerten Ergebnissen zu arbeiten, ohne verschachtelte Rückruffunktionen, was den Code lesbarer macht. Früher habe ich bereits einen kleinen Beitrag darüber geschrieben, was ein Promise ist. Aber jetzt betrachten wir die Struktur und einige Methoden.

Wie die Struktur eines Promise aussieht

Promise wird mit dem Konstruktor new Promise() erstellt, dem eine Funktion mit zwei Argumenten übergeben wird: resolve und reject. Genau diese Struktur sollte man sich merken. Lassen Sie uns ein Beispiel betrachten:
const promise = new Promise((resolve, reject) => {
  const success = Math.random() > 0.5;
  
  setTimeout(() => {
    if (success) {
      resolve("Operation erfolgreich ausgeführt");
    } else {
      reject("Es ist ein Fehler aufgetreten");
    }
  }, 1000);
});
Dieser Code erstellt ein Promise, das nach einer Sekunde (Timeout 1000) entweder mit der Zeichenfolge "Operation erfolgreich ausgeführt" aufgelöst (resolve) oder mit einer Fehlermeldung abgelehnt (reject) wird. Das heißt, wir haben eine Antwortemulation success erstellt, eine Sekunde gewartet und ein Ergebnis erhalten, das von unserem zufälligen Wert in success abhing.

Arbeiten mit Promise

Promise hat die Methoden .then(), .catch() und .finally() zur Verarbeitung des Ergebnisses.
promise
  .then(result => {
    console.log("Erfolg:", result);
  })
  .catch(error => {
    console.log("Fehler:", error);
  })
  .finally(() => {
    console.log("Operation abgeschlossen");
  });
Hier erhält .then() den Wert von resolve, .catch() verarbeitet den Fehler von reject, und .finally() wird immer ausgeführt, unabhängig vom Ergebnis. Diese Methoden sollte man sich ebenfalls merken.

Promise-Ketten

Die Methode .then() gibt ein neues Promise zurück, was eine sequenzielle (verkettete) Ausführung ermöglicht.
new Promise(resolve => resolve(10))
  .then(num => num * 2)
  .then(num => num + 5)
  .then(result => console.log("Ergebnis:", result));
Hier wird der Ausgangswert 10 mit 2 multipliziert, 5 hinzugefügt, und das Ergebnis ist 25.

Promise.all, Promise.race und Promise.any

Die Methode Promise.all() wartet auf die Ausführung aller übergebenen Promises.
Promise.all([
  new Promise(resolve => setTimeout(() => resolve("Erstes"), 1000)),
  new Promise(resolve => setTimeout(() => resolve("Zweites"), 2000))
]).then(results => console.log("Alle ausgeführt:", results));
Und Promise.race() gibt das erste ausgeführte Promise zurück. Diese Methode lässt sich leicht mit dem Namen race merken - wer zuerst kommt, mahlt zuerst.
Promise.race([
  new Promise(resolve => setTimeout(() => resolve("Erstes"), 1000)),
  new Promise(resolve => setTimeout(() => resolve("Zweites"), 500))
]).then(result => console.log("Erstes ausgeführt:", result));
Promise.any() ist eine Methode, die ein Array von Promises akzeptiert und das erste erfolgreich ausgeführte Promise zurückgibt. Wenn alle Promises abgelehnt werden, gibt es einen Fehler vom Typ AggregateError zurück.
const p1 = new Promise((_, reject) => setTimeout(() => reject("Fehler 1"), 1000));
const p2 = new Promise(resolve => setTimeout(() => resolve("Erfolg 2"), 2000));
const p3 = new Promise(resolve => setTimeout(() => resolve("Erfolg 3"), 3000));

Promise.any([p1, p2, p3])
  .then(result => console.log("Erstes erfolgreiches Ergebnis:", result))
  .catch(error => console.log("Alle Promises abgelehnt:", error));
Was im Beispiel passiert:
  1. p1 wird nach 1 Sekunde abgelehnt.
  2. p2 wird nach 2 Sekunden erfolgreich ausgeführt.
  3. Promise.any() gibt p2 zurück, da es das erste erfolgreiche war.
  4. Wenn alle Promises abgelehnt werden, wird ein AggregateError zurückgegeben, der alle Fehler enthält.
Diese Methode ist nützlich, wenn man das erste erfolgreiche Ergebnis erhalten möchte, während man die fehlgeschlagenen ignoriert.
```

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

09. Dez, 14:50 Uhr

[Fix] Keine solche Datei oder Verzeichnis @ rb_sysopen - tmp/pids/server.pid

meme code
meme code@memecode
Was man wissen muss, um eine erfolgreiche Karriere als Freelancer im IT-Bereich aufzubauen
23. Dez, 16:03 Uhr

Was man wissen muss, um eine erfolgreiche Karriere als Freelancer im IT-Bereich aufzubauen

meme code
meme code@memecode
Virtueller Cloud-Server: Was ist das und was sind seine Besonderheiten
03. Jan, 10:58 Uhr

Virtueller Cloud-Server: Was ist das und was sind seine Besonderheiten

meme code
meme code@memecode
[Fix] Heroku / SearchBox-Addon - Indexierungsfehler "Der Client kann den Server nicht als Elasticsearch verifizieren"
31. Jan, 13:09 Uhr

[Fix] Heroku / SearchBox-Addon - Indexierungsfehler "Der Client kann den Server nicht als Elasticsearch verifizieren"

meme code
meme code@memecode
06. Feb, 15:31 Uhr

Fehlerbehebung [DEPRECATION] #adapters ist veraltet. Verwenden Sie stattdessen #profiles. (Codecov / docile)

meme code
meme code@memecode
Was ist ein Promise in JavaScript und wie versteht man das Wesentliche schnell?
18. Feb, 11:01 Uhr

Was ist ein Promise in JavaScript und wie versteht man das Wesentliche schnell?

meme code
meme code@memecode
Was ist Memoization (Beispiele für Ruby und Ruby on Rails)?
20. Feb, 18:16 Uhr

Was ist Memoization (Beispiele für Ruby und Ruby on Rails)?

meme code
meme code@memecode
Was ist Debounce in JavaScript und warum ist es wichtig?
21. Mär, 16:39 Uhr

Was ist Debounce in JavaScript und warum ist es wichtig?

meme code
meme code@memecode
Was ist CFB (Cipher Feedback)?
21. Mär, 16:53 Uhr

Was ist CFB (Cipher Feedback)?

meme code
meme code@memecode
Was ist XOR und wie funktioniert es?
21. Mär, 17:05 Uhr

Was ist XOR und wie funktioniert es?

meme code
meme code@memecode
Embedded-Programmierung: Was ist das und wo fängt man an
24. Mär, 16:48 Uhr

Embedded-Programmierung: Was ist das und wo fängt man an

meme code
meme code@memecode
Pessimistische Sperre in Rails: was ist das und wann sollte man sie anwenden? Welche Alternativen gibt es?
31. Mär, 17:45 Uhr

Pessimistische Sperre in Rails: was ist das und wann sollte man sie anwenden? Welche Alternativen gibt es?

meme code
meme code@memecode