Sobes.tech
Junior

Milline on erinevus sünkroonsete ja asünkroonsete päringute vahel?

sobes.tech AI

Vastus AI-lt

Sünkroonilised päringud blokeerivad jooksva täitmislõigu kuni vastuse saamiseni. Asünkroonilised päringud ei blokeeri lõiku; vastus töödeldakse pärast operatsiooni lõppu, tavaliselt tagasikutsumise (callback), delegaadi või sulgude kaudu.

Omadus Sünkroonne päring Asünkroonne päring
Lõigu blokeerimine Jah Ei
UI reageerimine Võib blokeerida UI Ei blokeeri UI
Rakendamise keerukus Lihtsam Keerulisem (oleku haldamine)
Kasutus iOS-is Harva, ainult lühikesteks ülesanneteks, mitte peamisel lõigul Eelistatud, eriti pikkade operatsioonide puhul

Näide asünkroonsest päringust URLSessioni kasutamisega:

// Loome URLSessioni ülesande
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // See plokk täidetakse asünkroonselt pärast päringu lõppu
    if let error = error {
        print("Viga: \(error.localizedDescription)")
        return
    }

    // Saadud andmete töötlemine
    if let data = data {
        print("Andmed saadud, baitide arv: \(data.count)")
    }

    // UI uuendamine peab toimuma peamisel lõigul
    DispatchQueue.main.async {
        // UI uuendamine
    }
}

// Käivita ülesanne
task.resume()

// Kood täidetakse kohe, mitte päringu lõppu oodates
print("Päring saadetud")