У меня две асинхронные функции. Мне нужно запустить вторую функцию на основе первого вывода и запустить третью функцию после завершения второй. Я сделал это вот так. Это правильный способ сериализации? И как справиться со слабой ссылкой на себя?
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
function1() // async completion contains leave()
dispatchGroup.notify(queue: DispatchQueue.main) { [weak self] in
guard let strongSelf = self else {return}
strongSelf.dispatchGroup.enter()
strongSelf.function2() // Also async, dependent on the result of function1. contains leave()
strongSelf.dispatchGroup.notify(queue: DispatchQueue.main) {
strongSelf????.function3()
print("results of function1 and function2")
// I must wait to finish first two tasks in order, in other words serial queue
}
}