[swift] Swift PromiseKit에서 활용되는 프로토콜 설명

PromiseKit은 Swift에서 비동기 코드를 간편하게 다루기 위한 라이브러리입니다. 이 라이브러리는 프로미스(Promise) 개념을 기반으로 동작하며, 비동기 작업의 결과를 캡슐화하고 처리할 수 있는 강력한 도구를 제공합니다.

PromiseKit에서는 다양한 프로토콜을 제공하여 비동기 작업을 처리하는데 사용됩니다. 이번 포스트에서는 주요 프로토콜들을 설명하겠습니다.

1. Thenable

Thenable 프로토콜은 프로미스와 비슷한 동작을 하는 객체를 나타냅니다. Thenable 객체는 then 메서드를 구현하여 비동기 작업의 결과를 처리하고, 다음 결과에 대한 동작을 지정할 수 있습니다.

protocol Thenable {
    func then<U>(on: DispatchQueue?, _ body: (T) throws -> U) -> Promise<U>
}

then 메서드에서는 on 파라미터를 통해 실행할 디스패치 큐와, 비동기 작업의 결과를 처리하는 클로저를 전달합니다.

2. Catchable

Catchable 프로토콜은 에러 처리를 위한 프로토콜입니다. Catchable 객체는 catch 메서드를 구현하여 비동기 작업 중 발생한 에러를 처리할 수 있습니다.

protocol Catchable {
    func `catch`<U>(on: DispatchQueue?, _ body: (Error) throws -> U) -> Promise<U>
}

catch 메서드에서는 on 파라미터를 통해 실행할 디스패치 큐와, 에러를 처리하는 클로저를 전달합니다.

3. Finallyable

Finallyable 프로토콜은 비동기 작업의 완료 후 항상 수행되어야 하는 동작을 정의하는 프로토콜입니다. Finallyable 객체는 finally 메서드를 구현하여 비동기 작업의 완료 후 실행될 코드를 작성할 수 있습니다.

protocol Finallyable {
    func `finally`(on: DispatchQueue?, _ body: () -> Void)
}

finally 메서드에서는 on 파라미터를 통해 실행할 디스패치 큐와, 실행할 코드를 전달합니다.

위에서 설명한 Thenable, Catchable, Finallyable 프로토콜은 PromiseKit에서 비동기 작업을 다루기 위한 핵심 프로토콜들입니다. 이들을 활용하여 비동기 작업의 결과를 처리하고, 에러를 처리하며, 완료 후의 동작을 수행할 수 있습니다.

참고 문서: