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("Հարցումը ուղարկված")