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")