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