Middle
Πώς λειτουργεί το Promise στη JavaScript;
sobes.tech AI
Απάντηση από AI
- Αντικείμενο που αντιπροσωπεύει την πιθανή τελική ολοκλήρωση (ή αποτυχία) μιας ασύγχρονης λειτουργίας και την αποτελεσματική τιμή της.
- Καταστάσεις υπόσχεσης:
pending: αρχική κατάσταση, ούτε ολοκληρωμένη ούτε απορριφθείσα.fulfilled: υποδηλώνει ότι η λειτουργία ολοκληρώθηκε με επιτυχία.rejected: υποδηλώνει ότι η λειτουργία τελείωσε με σφάλμα.
- Η μετάβαση από
pendingσεfulfilledήrejectedσυμβαίνει μόνο μία φορά και είναι μη αναστρέψιμη. - Μέθοδοι:
.then(onFulfilled, onRejected): δέχεται δύο συναρτήσεις callback. Η πρώτη (onFulfilled) καλείται σε περίπτωση επιτυχίας, η δεύτερη (onRejected) σε περίπτωση σφάλματος. Και τα δύο επιχειρήματα είναι προαιρετικά. Επιστρέφει μια νέα υπόσχεση..catch(onRejected): σύντομη μορφή του.then(null, onRejected). Χρησιμοποιείται για τη διαχείριση σφαλμάτων. Επιστρέφει μια νέα υπόσχεση..finally(onFinally): καλείται ανεξάρτητα από το αποτέλεσμα της υπόσχεσης (επιτυχία ή σφάλμα). Χρησιμοποιείται για τον καθαρισμό πόρων. Επιστρέφει μια νέα υπόσχεση.
- Δημιουργία υπόσχεσης:
new Promise((resolve, reject) => {
// Ασύγχρονη λειτουργία
const success = true;
if (success) {
resolve("Επιτυχής λειτουργία!"); // Μεταβαση σε κατάσταση fulfilled
} else {
reject("Κάτι πήγε στραβά..."); // Μεταβαση σε κατάσταση rejected
}
});
- Αλυσίδωση υποσχέσεων:
.then(),.catch(),.finally()επιστρέφουν υποσχέσεις, επιτρέποντας τη δημιουργία αλυσίδων για διαδοχική εκτέλεση ασύγχρονων λειτουργιών.
fetch(url)
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Σφάλμα:', error));