Auf asynchronen Code warten
Am 24.10.2021 um 10:56von , Kategorie: Blog, Tags:
Einige Operationen in Swift und besonders auf dem iPhone können nur asynchron ausgeführt werden. Jetzt kommt es aber gelegentlich vor, dass man auf die Ausführung eines asynchronen Codes (z. B. bei Netzwerk-Operationen) warten muss. Normalerweise würde man einen Completion-Handler nutzen. Wenn es jedoch mehrere Operationen sind, auf die man hintereinander warten muss, kann das sehr schnell sehr unübersichtlich werden. Man würde von einem Completion-Handler zum nächsten wandert. Zum Glück kann man jedoch auf die Ausführung von asynchronen Code warten, wenn man eine eigene DispatchGroup erstellt:
// Dispatch group erstellen
let group = DispatchGroup()
// 1. Hintergrund Ausführung
group.enter()
DispatchQueue.global(qos: .default).async {
// Asynchroner Code wird ausgeführt
...
// Ausführung beenden
group.leave()
}
// 2. Hintergrund Ausführung, die parallel zur ersten ausgeführt werden kann
group.enter()
DispatchQueue.global(qos: .default).async {
// Asynchroner Code wird ausgeführt
...
// Ausführung beenden
group.leave()
}
// Warten bis asynchroner Code ausgeführt wurde
group.wait()
Damit kann man relativ einfach aufeinander folgende asynchrone Operationen ausführen.