Promise-Zustände in JavaScript
Ein Promise kann sich in einem von drei Zuständen befinden. Bei der Erstellung befindet sich das Promise im Zustand "ausstehend" (pending) und kann dann entweder "erfüllt" (fulfilled) werden und ein Ergebnis zurückgeben, oder "abgelehnt" (rejected) werden und einen Grund für das Scheitern zurückgeben. Sie können den Übergang von einem Zustand in einen anderen beobachten, indem Sie den folgenden Code ausführen:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // setzen Sie entweder true oder false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // jede Sekunde geben wir das Promise in der Konsole aus
}, 1000);
Beachten Sie, dass die Zustände fulfilled und rejected unveränderlich sind: Wenn ein Promise in einen dieser Zustände übergegangen ist, kann es nicht mehr in einen anderen Zustand wechseln. Schauen wir uns ein Beispiel an. Im folgenden Code wird der Aufruf von reject zuerst erfolgen, daher wird der Aufruf von resolve ignoriert:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Erstellen Sie ein Promise, das nach einiger Zeit erfolgreich abgeschlossen wird. Geben Sie es in der Konsole aus und untersuchen Sie seinen anfänglichen und seinen abgeschlossenen Zustand.
Erstellen Sie ein Promise, das nach einiger Zeit mit einem Fehler abgeschlossen wird. Geben Sie es in der Konsole aus und untersuchen Sie seinen anfänglichen und seinen abgeschlossenen Zustand.