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();