Sobes.tech
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));