Junior
Senkron ve asenkron istekler arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Senkron istekler, yanıt alınana kadar mevcut yürütme akışını engeller. Asenkron istekler ise akışı engellemez; yanıt, genellikle geri çağırma (callback), delegat veya kapanış mekanizmasıyla işlemi tamamlandıktan sonra işlenir.
| Özellik | Senkron istek | Asenkron istek |
|---|---|---|
| Akış engelleme | Evet | Hayır |
| UI yanıt verebilirliği | UI'yi engelleyebilir | UI'yi engellemez |
| Uygulama karmaşıklığı | Daha basit | Daha karmaşık (durum yönetimi) |
| iOS'ta kullanım | Nadiren, sadece kısa görevler için, ana akışta değil | Tercih edilir, özellikle uzun işlemler için |
URLSession kullanarak asenkron istek örneği:
// URLSessionTask oluştur
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Bu blok, isteğin tamamlanmasından sonra asenkron olarak çalışır
if let error = error {
print("Hata: \(error.localizedDescription)")
return
}
// Alınan verilerin işlenmesi
if let data = data {
print("Veriler alındı, bayt: \(data.count)")
}
// UI güncellemesi ana thread'de yapılmalı
DispatchQueue.main.async {
// UI güncelle
}
}
// Görevi başlat
task.resume()
// Bu kod, isteğin tamamlanmasını beklemeden hemen çalışır
print("İstek gönderildi")