본문 바로가기

IT 정보

[소프트웨어 디자인] 프로미스는 어떻게 작동하나요?

* 본포스팅은 <예제로 배우는 소프트웨어 디자인>에서 발췌한 내용으로 작성되었습니다.

 

 

프로미스가 어떻게 작동하는지 살펴보겠습니다.

 

 

이 짧은 프로그램은 두 개의 다른 콜백(resolve: 모든 것이 성공했을 때 실행됨, reject: 문제가 발생했을 때 실행됨)을 인수로 받는 새로운 Pledge를 생성합니다. 최상위 콜백은 우리가 제일 먼저 수행하려는 부분, 즉, 지연이 예상되기 전에 실행하고자 하는 작업을 수행합니다.

 

여기서는 지연 목적으로 setTimeout의 지연을 0으로 설정해서 작업을 전환하겠습니다. 이 작업이 재개되면 resolve 콜백을 호출해서 지연 이후에 일어날 일을 트리거합니다.

 

이제 then이 있는 라인을 살펴보겠습니다. 이것은 방금 생성한 Pledge 객체의 메서드이며, 지연 후에 수행하려는 작업을 나타냅니다. then에 전달되는 인수는 또 다른 콜백 함수이며, 해당 함수는 resolve에 전달된 값을 받을 것입니다. 

 

이것은 첫 번째 작업이 두 번째 작업에 어떻게 정보를 전달하는지 보여줍니다(그림 3.3).

 

 

이 작업을 수행하기 위해 Pledge의 생성자는 action이라는 함수 하나를 취해야 합니다.

 

이 함수는 액션이 성공적으로 완료되면 수행할 작업과 그렇지 않은 경우 수행할 작업(즉, 오류 처리 방법), 이렇게 두 가지 콜백을 인수로 받아야 합니다.

 

Pledge는 이러한 콜백을 적절한 타이밍에 실행합니다.

 

Pledge에는 두 가지 메서드가 더 필요합니다. 바로 더 많은 작업을 가능하게 하는 then과 오류를 처리하는 catch입니다. 

 

어느정도 간단하게 만들기 위해 사용자가 원하는 만큼 많은 then을 연결할 수는 있지만, catch는 한 번만 허용하도록 하겠습니다.

 


 

《예제로 배우는 소프트웨어 디자인》

예스24

 

 

반응형