Async/Await vs Combine with URLSession
어째서 Swift는 combine을 내놓고서 async/await을 내놓으셨나이까?
URLSession 을 보통 Open API와 통신하는 경우가 많았다.
URLSession을 통한 통신하는 방법은 크게 3가지이다.
Completion Handler
Combine
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