Merhaba,
Her bir func için completionHandler tanımlarsınız. Mesela func1 için completinHandler tanımlayıp diğerine geçersiniz sırasıyla:
func func1(_ completionHandler : @escaping ((_ isResponse : Bool) -> Void)) {
    //Burada func1 içinde, if else ile istediğin işlemler başarıyla biterse completionHandler için true ayarı yaparsın
    completionHandler(true)
    //Burada func1 içinde istediğin işlemler başarıyla bitmezse bir hata olursa completionHandler için false ayarı yaparsın
    completionHandler(false)
}
//sonra uygulamandaki bölümde ise
func1 { (isResponse) in
    //Burada isResponse true döndüyse func2 çalıştırılacak
    //func2()
    //sonra yine func2 için de yukarıdaki gibi completionHandler tanımlayıp sırayla gidersiniz..
}