Может быть, вам нужно использовать группы рассылки:
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
longRunningFunction { dispatchGroup.leave() }
dispatchGroup.enter()
longRunningFunctionTwo { dispatchGroup.leave() }
dispatchGroup.notify(queue: .main) {
print("Both functions complete ?")}
Предыдущий код, это небольшой пример, вы можете попробовать использовать похожие концепции, например, вставить свою функцию в цикл и реализовать .leave () на каждой итерации