Μίλησέ μου για τη δομή async/await στη JavaScript.
sobes.tech AI
Απάντηση από AI
async/await — συντακική ζάχαρη πάνω από υποσχέσεις, σχεδιασμένη για πιο απλό γράψιμο ασύγχρονου κώδικα που φαίνεται συγχρονικός.
Μια λειτουργία που έχει σημειωθεί με τη λέξη async επιστρέφει πάντα μια υπόσχεση. Μέσα σε μια async λειτουργία, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί await.
Ο τελεστής await χρησιμοποιείται πριν από την κλήση μιας υπόσχεσης. Αναστέλλει την εκτέλεση της async λειτουργίας μέχρι η υπόσχεση να επιλυθεί (resolved) ή να απορριφθεί (rejected). Το αποτέλεσμα της υπόσχεσης (επιτυχία ή σφάλμα) επιστρέφεται από το await.
Εάν η υπόσχεση στην οποία εφαρμόζεται το await απορριφθεί, αυτό προκαλεί μια εξαίρεση που μπορεί να πιαστεί με ένα μπλοκ try...catch.
// Παράδειγμα χρήσης async/await
async function fetchData() {
try {
// Περιμένουμε την ολοκλήρωση μιας ασύγχρονης λειτουργίας (π.χ. αίτημα API)
const response = await fetch('https://api.example.com/data');
// Ανάλυση της απάντησης σε JSON
const data = await response.json();
// Εμφάνιση των ληφθέντων δεδομένων
console.log(data);
} catch (error) {
// Πιάσιμο τυχόν σφάλματος
console.error('Σφάλμα κατά την λήψη δεδομένων:', error);
}
}
// Κλήση της async λειτουργίας
fetchData();
// Async λειτουργία που επιστρέφει υπόσχεση
async function getValue() {
return 10; // Αυτό τυλίγεται αυτόματα σε Promise.resolve(10)
}
getValue().then(value => console.log(value)); // Θα εμφανίσει 10
Πλεονεκτήματα του async/await:
- Αναγνωσιμότητα κώδικα: Ο ασύγχρονος κώδικας μοιάζει περισσότερο με συγχρονικό
- Χειρισμός σφαλμάτων: Πιο εύκολο στη χρήση με τυπικά μπλοκ
try...catch - Λιγότερη εμφωλευμένη δομή: Αποφεύγεται η "κόλαση των callback" ή οι μακριές αλυσίδες
.then().
Είναι σημαντικό να θυμάστε ότι το await μπορεί να χρησιμοποιηθεί μόνο μέσα σε async λειτουργίες.