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("Дархост ирсол шуд")