본문 바로가기

Swift 공부

Async / await의 도입 스위프트 5.5

Async/await의 대한 공개가 벌써 꽤 오랜시간이 지났고 Async/await를 통해 클로저의 지옥에서 빠져나올수 있겠구나 생각을 했지만 생각보다 지원타겟이 높기에 아직 실무에 투입하기에는 이르지만 미리미리 준비하는 개발자가 되기 위해 Async/await에 대한 공부를 미리 해볼려고한다.

 

func hellCode(test : String){
        TstoryC(test: test) { c in
            self.TstoryB(test: c) { b in
                self.TstoryA(test: b) { a in
                    print("a")
                }
            }
        }
    }
    
    func TstoryA(test : String , completionHandler: @escaping(_ a : String) -> ()) {
        
        completionHandler(test)
    }

    func TstoryB(test : String ,completionHandler: @escaping(_ a : String) -> ()) {
        completionHandler(test)
        
    }

    func TstoryC(test : String ,completionHandler: @escaping(_ a : String) -> ()) {
        
        completionHandler(test)
    }

이 보기만해도 토악질 나오는 코드를 보셨습니까..

이런 클로저 지옥에서 우리를 구원하기위해 Async/await가 도입이 되었다 생각을 합니다.

 

빠르게 코드로 보여드리면

 

func hellCode(test : String) async throws {
        
        let dataC = try await TstoryC(test: test)
        
        let dataB = try await TstoryB(test: dataC)
       
        let dataA = try await TstoryA(test: dataB)
       
    }
    
    func TstoryA(test : String) async throws -> String  {
        
        return test
    }

    func TstoryB(test : String) async throws -> String  {
        
        return test
    }

    func TstoryC(test : String) async throws -> String  {
        
        return test
    }

 

짜자잔 기존의 escaping clousre 를 이용해 해결했던 부분을 함수쪽에 async throw 사용하는쪽에서 try await 를 사용하게되면

 

이렇게 훨씬더 깔끔하고 사용하기 좋은 코드가 완성 되는것을 확인 할 수 있습니다.

 

이제 이렇게 클로저들이 하나씩 사라지고 Async/await가 일반화가 된다면 상당히 편할것으로 예상이 된다.

 

https://github.com/gnejfejf2/asyncCode

 

GitHub - gnejfejf2/asyncCode

Contribute to gnejfejf2/asyncCode development by creating an account on GitHub.

github.com

 

'Swift 공부' 카테고리의 다른 글

RxDataSources Multiple Object Multiple Section  (1) 2022.04.08
Swift Throw Error Handling  (0) 2022.04.07
Swift WMO  (0) 2022.04.04
Tuist 모듈화 공부 Swinject 3편 적용기  (0) 2022.04.03
Tuist 모듈화 공부 Swinject 2편 잡담  (0) 2022.04.01