Async/Await vs Combine with URLSession

어째서 Swift는 combine을 내놓고서 async/await을 내놓으셨나이까?

URLSession 을 보통 Open API와 통신하는 경우가 많았다.

URLSession을 통한 통신하는 방법은 크게 3가지이다.

  1. Completion Handler

  2. Combine

  3. async/await

1번은 문제가 많아서 2번 3번이 나왔다.

Completion Handler 는 콜백지옥이 발생될 수 있으니 제쳐놓고

Combine이냐 async/awiat냐 그걸 선택하는게 문제였다.

Apple 입장

Apple은 async/await를 사용하기 희망한다.

나도 async/await가 더 맞는 방향이 아닌가 생각이 든다.

우선 http의 특성 중 하나가 비연결형인데

combine은 data stream에 특화되어 있다보니 연결형에 더 어울린다는 생각이다.

한 번 수신하고 말 것을 cancelable 저장에 불필요한 일이 많다고 생각이 들기 때문이다.

Data stream이 필요하다면 차라리 async/await로 URL통신을 한 이후

publisher를 하나 만들어서 처리하는게 어울리지 않을까 생각이 든다.


https://developer.apple.com/documentation/combine/using-combine-for-your-app-s-asynchronous-code

https://achoo-ios.tistory.com/2