Junior
Синхрон жана асинхрон суроолордун айырмасы эмнеде?
sobes.tech AI
AIден жооп
Синхрондуу суроолор учурдагы иштетүү агымын жооп алгандан кийин токтотот. Асинхрондуу суроолор агымды токтотпойт; жооп иштетүү операциясы аяктагандан кийин, адатта, кайтаруу механизми (callback), делегат же жабуу аркылуу ишке ашырылат.
| Өзгөчөлүк | Синхрондуу суроо | Асинхрондуу суроо |
|---|---|---|
| Агымды токтотуу | Ооба | Жок |
| UI-реактивдүүлүк | Мүмкүн UI'ни токтотушу мүмкүн | Токтотпойт UI'ни |
| Ишке ашыруу татаалдыгы | Жөнөкөй | Кыйын (абалдарды башкаруу) |
| iOS'до колдонуу | Аз, кыска тапшырмалар үчүн, негизги агымда эмес | Арзуу, өзгөчө узак операциялар үчүн |
URLSession колдонуп асинхрондуу суроо мисалы:
// URLSessionTask түзүү
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Бул блок асинхрондуу түрдө суроо аяктагандан кийин ишке ашат
if let error = error {
print("Ката: \(error.localizedDescription)")
return
}
// Алынган маалыматтарды иштетүү
if let data = data {
print("Маалымат алынды, байттар: \(data.count)")
}
// UI жаңыртуу негизги агымда болушу керек
DispatchQueue.main.async {
// UI жаңыртуу
}
}
// Тапшырманы баштоо
task.resume()
// Бул жактагы код дароо ишке ашат, суроо аяктагандан кийин күтпөй
print("Суроо жөнөтүлдү")