* 본포스팅은 <예제로 배우는 소프트웨어 디자인>에서 발췌한 내용으로 작성되었습니다.
플루언트 인터페이스는 객체 지향 프로그래밍의 스타일 중 하나로, 객체의 메서드가 this를 반환해서 메서드 호출을 연결할 수 있게 하는 방식입니다. 예를 들어, 만약 우리의 클래스가 다음과 같다면,
다음과 같이 작성할 수 있습니다.
심지어 다음과 같이 할 수도 있습니다.
Array의 플루언트 인터페이스를 사용하면 일반적으로 중간 결과를 임시 변수에 할당하는 것보다 더 읽기 쉬운 표현식을 작성할 수 있습니다. 예를 들면, Array.filter(..)..map(..).와 같은 식입니다.
만약 Pledge에 주어진 원래 작업이 성공적으로 완료되면, Pledge는 resolve 콜백을 호출해서 값을 제공해줄 것입니다. 우리는 이 값을 첫 번째 then에 전달하고, 그 then의 결과를 두 번째 then에 전달하는 식으로 진행됩니다.
만약 그 중 하나라도 실패하고 exception를 던진다면, 그 예외를 에러 핸들러에 전달하게 됩니다. 모두 함께 모아보면 전체 클래스는 다음과 같이 생겼습니다.
❗this 바인드하기 Pledge의 생성자는 bind라는 특별한 함수를 두 번 호출합니다. 객체 obj를 만들고 메서드 meth를 호출하면 자바스크립트는 meth 내에서 특별한 변수 this를 obj로 설정합니다. 그러나 우리가 메서드를 콜백으로 사용할 때는 this가 자동으로 올바른 객체로 설정되지 않습니다. 메서드를 올바른 this로 변환하려면 bind를 사용해야 합니다. |
Pledge를 생성하고 값을 반환해 봅시다.
왜 작동하지 않을까요?
다음 예시는 액션을 서로 연결할 수 있는 방법을 보여줍니다.
각 then 내에서 return을 사용함에 주목하세요. 이 절들이 모두 하나의 작업에서 실행되기 때문입니다. 다음 절에서 보게 될 것처럼 프로미스의 완전한 구현은 then 핸들러 내에서 일반 코드와 지연된 작업을 모두 실행할 수 있게 해 줍니다.
마지막으로, 이 예제에서는 오류 처리가 제대로 작동하는지 확인하기 위해 reject를 호출해서 명시적으로 문제를 알립니다.
《예제로 배우는 소프트웨어 디자인》
'IT 정보' 카테고리의 다른 글
[풀스택 개발] 플러터 설치 및 환경 설정 ② (2) | 2024.11.20 |
---|---|
[소프트웨어 디자인] 프로미스는 어떻게 작동하나요? (0) | 2024.11.12 |
[소프트웨어 디자인] 비동기 실행은 어떻게 관리할까요? (1) | 2024.11.07 |