Скажем, у меня есть 3 разных асинхронных задачи, которые я хочу выполнить, прежде чем вызывать какую-то функцию. Я знаю, используя диспетчерские группы, чтобы сделать такую вещь, если эти задачи были в цикле,Могу ли я использовать группу отправки не в цикле?
var dispatchGroup = DispatchGroup()
for task in tasks {
dispatchGroup.enter()
DoSomeTask { (error, ref) -> Void in
dispatchGroup.leave()
}
}
dispatchGroup.notify(queue: DispatchQueue.main, execute: {
DoSomeFunction()
})
Однако, я запутался о том, как вы могли бы сделать это, если эти задачи были все в одной и той же функции но не нужно было делать с eachother, например, нажатием 3 разных значений в вашу базу данных. Что-то вроде этого:
updateDatabase() {
var dispatchGroup = DispatchGroup()
DoTask1 { (error, ref) -> Void in
}
DoTask2 { (error, ref) -> Void in
}
DoTask3 { (error, ref) -> Void in
}
}
Где бы вы положили заявление leave
и enter
в таком случае, как это?