Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ συγχρονικών και ασύγχρονων αιτημάτων;

sobes.tech AI

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

Οι συγχρονικές αιτήσεις μπλοκάρουν το τρέχον νήμα εκτέλεσης μέχρι να λάβουν απάντηση. Οι ασύγχρονες αιτήσεις δεν μπλοκάρουν το νήμα; η απάντηση επεξεργάζεται στο τέλος της λειτουργίας, συνήθως μέσω μηχανισμού callback, delegate ή κλεισίματος.

Χαρακτηριστικό Συγχρονική αίτηση Ασύγχρονη αίτηση
Μπλοκάρισμα νήματος Ναι Όχι
Ανταπόκριση UI Μπορεί να μπλοκάρει το UI Δεν μπλοκάρει το UI
Πολυπλοκότητα υλοποίησης Πιο απλό Πιο πολύπλοκο (διαχείριση κατάστασης)
Χρήση σε iOS Σπάνια, μόνο για σύντομες εργασίες, όχι στο κύριο νήμα Προτιμάται, ειδικά για μακρές λειτουργίες

Παράδειγμα ασύγχρονης αίτησης με URLSession:

// Δημιουργία URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // Αυτό το μπλοκ εκτελείται ασύγχρονα μετά την ολοκλήρωση της αίτησης
    if let error = error {
        print("Σφάλμα: \(error.localizedDescription)")
        return
    }

    // Επεξεργασία των ληφθέντων δεδομένων
    if let data = data {
        print("Δεδομένα λήφθηκαν, bytes: \(data.count)")
    }

    // Η ενημέρωση UI πρέπει να γίνεται στο κύριο νήμα
    DispatchQueue.main.async {
        // Ενημέρωση UI
    }
}

// Εκκίνηση της εργασίας
task.resume()

// Ο κώδικας εδώ εκτελείται άμεσα, χωρίς να περιμένει την ολοκλήρωση της αίτησης
print("Αίτηση αποστολή")