Disons que j'ai 3 différentes tâches asynchrones que je veux faire avant d'appeler une fonction. Je suis au courant d'utiliser des groupes d'expédition à faire une telle chose si ces tâches étaient dans une boucle,Puis-je utiliser le groupe d'expédition non en boucle?
var dispatchGroup = DispatchGroup()
for task in tasks {
dispatchGroup.enter()
DoSomeTask { (error, ref) -> Void in
dispatchGroup.leave()
}
}
dispatchGroup.notify(queue: DispatchQueue.main, execute: {
DoSomeFunction()
})
Cependant, je suis confus sur la façon dont vous feriez cela si ces tâches étaient tous dans la même fonction mais n'a pas à faire avec l'autre, comme pousser 3 valeurs différentes à votre base de données. Quelque chose comme ceci:
updateDatabase() {
var dispatchGroup = DispatchGroup()
DoTask1 { (error, ref) -> Void in
}
DoTask2 { (error, ref) -> Void in
}
DoTask3 { (error, ref) -> Void in
}
}
Où mettriez-vous la déclaration leave
et enter
dans ce cas comme cela?