Sobes.tech
Junior — Middle

Ինչպե՞ս ապահովել որոշակի կոդի բլոկի կատարմանը միաժամանակ մի քանի HTTP հարցումների պատասխանները ստանալուց հետո:

sobes.tech AI

Պատասխան AI-ից

iOS-ում, մի քանի HTTP հարցումների ավարտից հետո կոդի բլոկը կատարելու համար հարմար է օգտագործել DispatchGroup-ը: Այն թույլ է տալիս հետևել ասինխրոնային առաջադրանքների խմբին և կատարել կոդը, երբ բոլորը ավարտվեն:

Swift-ում օրինակ՝

let dispatchGroup = DispatchGroup()

var results: [Data] = []

for url in urls {
    dispatchGroup.enter()
    URLSession.shared.dataTask(with: url) { data, response, error in
        if let data = data {
            results.append(data)
        }
        dispatchGroup.leave()
    }.resume()
}

dispatchGroup.notify(queue: .main) {
    // Այս բլոկը կկատարվի բոլոր հարցումների ավարտից հետո
    print("Բոլոր հարցումները ավարտվեցին")
}

Այսպիսով, DispatchGroup-ը օգնում է սինխրոնիզացնել մի քանի ասինխրոնային գործողություններ և կատարել կոդը դրանց ավարտից հետո։