Sobes.tech
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")