Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ της χρήσης Promise και της σύνταξης async/await;

sobes.tech AI

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

Το Promise αντιπροσωπεύει ένα αντικείμενο που αντανακλά την τελική ολοκλήρωση ή απόρριψη μιας ασύγχρονης λειτουργίας. Διαχειρίζεται ροές ασύγχρονων λειτουργιών μέσω των callbacks .then() και .catch().

Το async/await είναι μια συντακτική ζάχαρη πάνω από το Promise, που καθιστά τον ασύγχρονο κώδικα πιο ευανάγνωστο και παρόμοιο με τον συγχρονικό. Μια λειτουργία που έχει χαρακτηριστεί ως async επιστρέφει πάντα ένα Promise. Ο τελεστής await μπορεί να χρησιμοποιηθεί μόνο μέσα σε async λειτουργίες και διακόπτει την εκτέλεση της λειτουργίας μέχρι το Promise να επιλυθεί ή να απορριφθεί, επιστρέφοντας το αποτέλεσμα ή ρίχνοντας εξαίρεση.

Πτυχή Promise Async/Await
Αναγνωσιμότητα Απαιτεί αλυσίδες .then() και .catch() Μοιάζει με συγχρονικό κώδικα, γραμμική ροή
Διαχείριση σφαλμάτων Χρησιμοποιεί .catch() Χρησιμοποιεί μπλοκ try...catch
Ροή εκτέλεσης Διαχειρίζεται από callbacks Αναστέλλει/συνεχίζει τη λειτουργία
Επιστρεφόμενη τιμή Promise Promise (για async λειτουργίες) ή το αποτέλεσμα του Promise (για await)
Εξάρτηση Αυτόνομος μηχανισμός Βασίζεται σε Promise

Παράδειγμα με Promise:

// Παράδειγμα με Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Δεδομένα λήφθηκαν (Promise)");
    }, 1000);
  });
}

fetchDataPromise()
  .then(data => console.log(data))
  .catch(error => console.error(error));

Παράδειγμα με async/await:

// Παράδειγμα με async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Δεδομένα λήφθηκαν (async/await)");
    }, 1000);
  });
}

async function showData() {
  try {
    const data = await fetchDataAsync();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

showData();