Junior
Ποια είναι η διαφορά μεταξύ async/await και Promise;
sobes.tech AI
Απάντηση από AI
Το async/await είναι μια συντακτική ζάχαρη πάνω από τις υποσχέσεις. Επιτρέπει τη γραφή ασύγχρονου κώδικα με πιο αναγνώσιμο και συγχρονισμένο στυλ, χρησιμοποιώντας τις λέξεις-κλειδιά async για συναρτήσεις που περιέχουν await για την αναμονή της επίλυσης μιας υπόσχεσης. Οι υποσχέσεις είναι αντικείμενα που αντιπροσωπεύουν την τελική ολοκλήρωση (ή αποτυχία) μιας ασύγχρονης λειτουργίας και την αποτελεσματική τιμή της.
| Χαρακτηριστικό | async/await | Promise |
|---|---|---|
| Συντακτικό | Πιο κοντά σε κώδικα συγχρονισμένο. | Χρησιμοποιεί τις μεθόδους .then(), .catch(), .finally(). |
| Αναγνωσιμότητα | Γενικά υψηλότερη, ειδικά σε αλυσίδες. | Μπορεί να οδηγήσει σε "Callback hell" σε πολύπλοκες αλυσίδες. |
| Χειρισμός σφαλμάτων | Χρησιμοποιεί το τυπικό try...catch. |
Χρησιμοποιεί .catch() ή τον δεύτερο παράγοντα στο .then(). |
| Παραλληλισμός | Απαιτεί ρητή χρήση του Promise.all() ή Promise.allSettled(). |
Μπορεί να είναι πιο ρητό, αλλά λιγότερο αναγνώσιμο χωρίς async/await. |
// Παράδειγμα με Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Δεδομένα λήφθηκαν');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Παράδειγμα με async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Δεδομένα λήφθηκαν');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();