더북(TheBook)

1.2 Promise로 더 나아진 콜백

 

 

모든 희망이 사라진 것은 아닙니다. 약속할 수 있는 것은, Promise가 RxJS 해결책 중 하나는 아니지만 RxJS와 함께 쓸 수 있다는 점입니다. 자바스크립트 ES6는 미래의 어느 시점에 완료될 것으로 예상되는 비동기 계산을 나타내고자 Promise를 도입했습니다. Promise를 사용하면 일련의 작업을 미래 값과 연결하여 연속(continuation)4을 구현할 수 있습니다. 연속은 콜백을 작성하기 위한 단순히 상징적인 용어로, 이전에 살펴봤던 제어의 역전과 관련이 있습니다. 연속(콜백)은 함수가 무작정 반환값을 기다리지 않고 다음에 수행해야 할 작업을 결정하게 해주며 배열, 트리 구조 순회, try/catch 블록에서만 아니라 비동기 프로그래밍에서도 많이 사용됩니다. 앞에서 살펴보았던 다음 코드도 반환값을 명시적으로 기다리는 함수가 없기 때문에 연속 전달 스타일(CPS, Continuation-Passing Style)라고 합니다.

ajax('<host1>/items',
items => {
  for (let item of items) {
    ajax('<host2>/items/${item.getId()}/info',
      dataInfo => {
        ajax('<host3>/files/${dataInfo.files}', 
          processFiles);
    });
  }
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.