더북(TheBook)

6.6 정리하기

 

Promise를 생성하고 사용하는 방법을 배웠다.

Promise는 나중에 벌어질 이벤트와 그 성공/실패에 따라 각기 실행할 콜백을 캡슐화한 장치다.

Promise 생성자의 인자는 비동기 작업을 감싼 함수다. 이 함수는 두 인자, 즉 resolvereject를 받는다. Promise가 귀결 또는 버림 처리될 때 둘 중 한 함수가 호출된다.

Promise 객체의 핵심은 then 메서드로, 콜백 함수 2개를 인자로 취한다.

Promise가 ‘귀결되면’ 첫 번째 콜백으로 이어지고, 이 콜백은 귀결값을 파라미터로 받는다.

Promise가 ‘버려지면’ 두 번째 콜백이 실행되고 버림 사유를 파라미터로 받는다. 버림 사유는 보통 Error 객체로 받지만, 단순 문자열도 상관없다.

프라미스 기반 코드를 테스트할 때 조심할 함정에 관해서도 이야기했다.

비동기로 작동하는 프라미스는 조심하지 않으면 테스트 기대식이 실행될 때 여전히 미결 상태로 남을 수 있다. 그래서 실패해야 할 테스트가 성공한 것처럼 눈속임한다. 재스민은 특별히 비동기 코드 테스팅을 done() 함수로 지원한다.

XMLHttpRequest를 사용한 코드를 테스트할 때 서버를 직접 호출하지 않고 비동기적인 HTTP 특성을 흉내 내고 싶을 때가 있다. 재스민이 제공하는 AJAX 모의 라이브러리를 사용하면 된다.

Promise는 구조상 체이닝을 할 수 있다. 경우의 수를 모두 따져보고 의도했던 then 콜백으로 실행 흐름이 이루어지는지 확인하라.

앵귤러JS의 $q나 크리스 코왈의 Q 같은 프라미스 래퍼를 이용하면 단위 테스트에서 프라미스 귀결/버림을 더 효과적으로 다룰 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.