14.5 요약
비동기적 프로그래밍의 복잡함, 그리고 그 복잡함을 덜기 위해 개발된 다양한 매커니즘을 완전히 이해가는 건 좀 어렵긴 하지만, 최신 자바스크립트 개발 동향을 따라잡기 위해서는 필요한 일입니다.
이 장에서는 다음과 같은 내용을 배웠습니다.
- 자바스크립트의 비동기적 실행은 콜백을 통해 이루어집니다.
- 프로미스를 콜백 대신 사용할 수 있는 건 아닙니다. 프로미스 역시 콜백을 사용합니다.
- 프로미스는 콜백이 여러 번 호출되는 문제를 해결했습니다.
- 콜백을 여러 번 호출해야 한다면 이벤트와 결합하는 방법을 생각할 수 있습니다. (프로미스도 함께 쓸 수 있습니다.)
- 프로미스는 반드시 결정된다는(성공 또는 실패한다는) 보장은 없습니다. 프로미스에 타임아웃을 걸면 이 문제가 해결됩니다.
- 프로미스는 체인으로 연결할 수 있습니다.
- 프로미스와 제너레이터 실행기를 결합하면 비동기적 실행의 장점을 그대로 유지하면서도 동기적인 사고방식으로 문제를 해결할 수 있습니다.
- 제너레이터를 써서 동기적인 사고방식으로 문제를 해결할 때는 프로그램의 어느 부분을 동시에 실행할 수 있는지 잘 살펴야 합니다. 동시에 실행할 수 있는 부분은
Promise.all
을 써서 실행하십시오. - 제너레이터 실행기를 직접 만드는 고생을 하지 말고 co나 Koa를 쓰십시오.
- 노드 스타일 콜백을 프로미스로 바꾸는 고생도 필요 없습니다. Q를 쓰십시오.
- 제너레이터 실행기를 쓰면 예외 처리도 익숙한 방식으로 할 수 있습니다.
비동기적 실행을 자바스크립트에서 처음 접했다면 막막하고 어려울 수 있습니다.
필자 역시 그랬습니다.
하지만 최신 자바스크립트 프로젝트에서는 비동기적 실행이 아주 많이 사용됩니다.