Junior
Mi a különbség a szinkron és az aszinkron kérések között?
sobes.tech MI
Válasz az MI-től
Szinkron kérések blokkolják a jelenlegi végrehajtási szálat a válasz megérkezéséig. Aszinkron kérések nem blokkolják a szálat; a válasz a művelet befejezése után kerül feldolgozásra, általában visszahívás (callback), delegált vagy záró mechanizmus révén.
| Jellemző | Szinkron kérés | Aszinkron kérés |
|---|---|---|
| Szál blokkolás | Igen | Nem |
| UI-reaktivitás | Blokkolhatja az UI-t | Nem blokkolja az UI-t |
| Megvalósítási összetettség | Egyszerűbb | Bonyolultabb (állapotkezelés) |
| Használat iOS-en | Ritka, csak rövid feladatokra, nem a fő szálon | Előnyös, különösen hosszú műveletekhez |
Példa aszinkron kérésre URLSession használatával:
// URLSessionTask létrehozása
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Ez a blokk aszinkron fut a kérés befejezése után
if let error = error {
print("Hiba: \(error.localizedDescription)")
return
}
// A kapott adatok feldolgozása
if let data = data {
print("Adatok érkeztek, bájtok: \(data.count)")
}
// UI frissítése a fő szálon kell történjen
DispatchQueue.main.async {
// UI frissítése
}
}
// A feladat indítása
task.resume()
// A kód itt azonnal fut, anélkül, hogy várna a kérés befejezésére
print("Kérés elküldve")