Welche Arten von Promise kennst du?
sobes.tech KI
Antwort von AI
Hauptarten von Promises in Node.js:
-
Grundlegendes Promise: Es ist ein Container für zukünftige Werte oder Fehler. Es hat drei Zustände:
pending(ausstehend),fulfilled(erfüllt),rejected(abgelehnt). Wird mit dem Konstruktornew Promise()erstellt.// Erstellen eines grundlegenden Promises const myPromise = new Promise((resolve, reject) => { // Asynchrone Operation setTimeout(() => { const success = true; if (success) { resolve("Operation erfolgreich abgeschlossen"); } else { reject("Ein Fehler ist aufgetreten"); } }, 1000); }); -
Promise.resolve(): Erstellt ein Promise, das sofort in den Zustand
fulfilledmit einem gegebenen Wert übergeht.// Erstellen eines resolved Promises const resolvedPromise = Promise.resolve("Dies ist bereits ein erfülltes Promise"); -
Promise.reject(): Erstellt ein Promise, das sofort in den Zustand
rejectedmit einem Fehlergrund übergeht.// Erstellen eines rejected Promises const rejectedPromise = Promise.reject(new Error("Dies ist ein abgelehntes Promise")); -
Promise.all(): Nimmt ein Array von Promises und gibt ein neues Promise zurück. Es geht in den Zustand
fulfilled, wenn alle Promises im Array erfolgreich abgeschlossen sind. Der Wert ist ein Array der Ergebnisse in der gleichen Reihenfolge wie die Eingabepromises. Wenn irgendein Promise abgelehnt wird, wirdPromise.all()sofort abgelehnt mit dem Grund des ersten abgelehnten Promises.// Verwendung von Promise.all() const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = new Promise((resolve, reject) => setTimeout(() => resolve(3), 100)); Promise.all([promise1, promise2, promise3]) .then((values) => { // values wird [1, 2, 3] }) .catch((error) => { // Fehlerbehandlung }); -
Promise.allSettled(): Nimmt ein Array von Promises und gibt ein neues Promise zurück. Es geht in den Zustand
fulfilled, wenn alle Promises im Array abgeschlossen sind, entweder erfolgreich (fulfilled) oder abgelehnt (rejected). Der Wert ist ein Array von Objekten, die das Ergebnis jeder Promise beschreiben (Status und Wert/Grund). Im Gegensatz zuPromise.all()wird es nicht sofort abgelehnt.// Verwendung von Promise.allSettled() const promiseA = Promise.resolve("Erfolg"); const promiseB = Promise.reject("Fehler"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results ist ein Array von Objekten: // [{status: 'fulfilled', value: 'Erfolg'}, {status: 'rejected', reason: 'Fehler'}] }); -
Promise.race(): Nimmt ein Array von Promises und gibt ein neues Promise zurück. Es geht in den Zustand
fulfilledoderrejectedmit dem Ergebnis/Grund der ersten Promise im Array, die entweder erfolgreich abgeschlossen oder abgelehnt wurde.// Verwendung von Promise.race() const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Ich bin schnell!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Ich bin langsam..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value wird "Ich bin schnell!" }); -
Promise.any(): Nimmt ein Array von Promises und gibt ein neues Promise zurück. Es geht in den Zustand
fulfilledmit dem Wert der ersten Promise, die erfolgreich abgeschlossen wurde. Wenn alle Promises abgelehnt werden, gibtPromise.any()einen FehlerAggregateErrorzurück, der die Gründe aller abgelehnten Promises enthält. Verfügbar ab Node.js 12.// Verwendung von Promise.any() const promiseFail1 = Promise.reject("Fehler 1"); const promiseSuccess = Promise.resolve("Erfolg!"); const promiseFail2 = Promise.reject("Fehler 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value wird "Erfolg!" }) .catch((error) => { // Behandlung von AggregateError, wenn alle Promises abgelehnt werden });