Sobes.tech
Middle

Τι χρησιμοποιούσατε πριν από την εμφάνιση του Promise;

sobes.tech AI

Απάντηση από AI

Πριν από την εμφάνιση του Promise, οι callbacks χρησιμοποιούνταν ευρέως.

Ουσία των callbacks:

Μια λειτουργία περνάει σε μια άλλη ως όρισμα και εκτελείται μετά την ολοκλήρωση μιας συγκεκριμένης λειτουργίας.

Παράδειγμα:

// Παράδειγμα κλήσης ασύγχρονης λειτουργίας με callback
function fetchData(callback) {
  setTimeout(() => {
    const data = "Μερικά δεδομένα";
    callback(null, data); // Το πρώτο όρισμα είναι σφάλμα, το δεύτερο το αποτέλεσμα
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Σφάλμα κατά την ανάκτηση δεδομένων:", err);
  } else {
    console.log("Ληφθέντα δεδομένα:", data);
  }
});

Μειονεκτήματα της χρήσης μόνο callbacks:

  • Callback Hell (Κόλαση των callbacks): Η αλυσίδα ενσωματωμένων ασύγχρονων λειτουργιών οδηγεί σε πολύ ενσωματωμένο και δύσκολο στην ανάγνωση κώδικα.
  • Δυσκολίες στη διαχείριση σφαλμάτων: Απαιτείται η μεταβίβαση και ο έλεγχος σφαλμάτων σε κάθε επίπεδο ενσωμάτωσης.
  • Έλλειψη τυποποιημένης προσέγγισης: Διάφορες βιβλιοθήκες μπορούσαν να χρησιμοποιούν διαφορετικές συμφωνίες για callbacks.

Εναλλακτικές προσεγγίσεις πριν από το Promise:

Πριν από την εμφάνιση του Promise, εκτός από τα "καθαρά" callbacks, χρησιμοποιούνταν βιβλιοθήκες και μοτίβα για τη διαχείριση της ασύγχρονης λειτουργίας, όπως:

  • Βιβλιοθήκες ασύγχρονης λειτουργίας: Για παράδειγμα, το async (για Node.js, αλλά και για τον browser). Παρείχαν εργαλεία για τη διαχείριση ασύγχρονων ροών (παράλληλη εκτέλεση, διαδοχική εκτέλεση).
  • Μοτίβο Publisher/Subscriber (Pub/Sub): Για πιο πολύπλοκα σενάρια αλληλεπίδρασης.
  • Εκπομποί γεγονότων: Στο Node.js και σε περιβάλλοντα browser (π.χ., EventEmitter).

Ωστόσο, οι callbacks παρέμεναν η βάση για πολλές ασύγχρονες λειτουργίες. Το Promise παρείχε έναν πιο δομημένο, ενοποιημένο και ευανάγνωστο τρόπο εργασίας με την ασύγχρονη λειτουργία, επιλύοντας πολλά προβλήματα του "Callback Hell".