본문 바로가기
Angular.js

옵저버블을 promise로 변환하고 boolean 형태의 값 출력

by 갈잃자 2023. 6. 13.

우리 회사와 다른 회사 간의 B2B 계약을 맺었고, 계약을 맺은 직원들에게 우리 어플리케이션의 구독 서비스를 기간 동안 무료로 배포했습니다. 이에 대해 제작하고 적용한 기술에 대해 작성하겠습니다.

 

새로운 고객 중 계약 목록에 있는 고객들은 자동으로 구독을 시키고, 구독 만료 기간을 설정하는 기술을 제작했습니다. 이를 위해 우리 회사 제품의 프론트는 AngularJS로 제작되었으며, 많은 Observable 타입의 객체들이 있어 동기적으로 처리하기 위해 Promise로 변환하여 이용해야 했습니다.

 

아래는 Observable 타입을 Promise로 변환하는 예시입니다.

 

import { Observable } from 'rxjs';

function convertObservableToPromise(observable) {
	// return 에 있는 promise 구조에서, resolve 인자값을 변환시키며 사용됨
  return new Promise((resolve, reject) => {
    observable.subscribe({
      next: (value) => {
        // 값이 true 또는 false인지 확인하는 조건을 설정
        if (value === true || value === false) {
          resolve(value); // resolve는 Promise 가 사용할 수 있는 인자값
        }
      },
      error: (error) => {
        reject(error);
      },
      complete: () => {
        // observable이 완료되었을 때에도 false를 반환하도록 설정
        resolve(false);
      }
    });
  });
}

const observable = new Observable((observer) => {

  // 예시로 true 값을 보내고 옵저버블을 완료
  observer.next(true);
  observer.complete();
});

convertObservableToPromise(observable)
  .then((result) => { // 응답 받은 결과는 resolve 값
    console.log(result); // true
  })
  .catch((error) => {
    console.error(error);
  });

'Angular.js' 카테고리의 다른 글

firebase용 cloud functions  (0) 2024.01.17
전체적으로 사용되는 shared [뒤로가기] 버튼 제작  (0) 2023.09.14
Angular Guard에 대하여  (2) 2023.05.30
Angular js: Directive  (0) 2023.03.31
Angular js 컴포넌트 구조 파악  (0) 2023.03.28

댓글