subscription

KKH_94·2023년 8월 30일
0

Reactive_Programming

목록 보기
13/18

리액티브 프로그래밍에서 "subscription"은 옵저버블(Observable)과 옵저버(Observer) 간의 연결을 나타내는 개념입니다.

옵저버블은 데이터 스트림이나 이벤트 스트림을 나타내며, 옵저버는 해당 스트림에서 발생하는 이벤트나 데이터를 처리하는 객체입니다.

Subscription은 이 둘 간의 관계를 정의하고, 옵저버블의 데이터가 옵저버에게 전달되는 방식을 관리합니다.

자세한 설명과 함께 RxJS (Reactive Extensions for JavaScript) 라이브러리를 사용하는 예시 코드를 통해 설명하겠습니다.

RxJS는 자바스크립트에서 리액티브 프로그래밍을 구현하기 위한 라이브러리입니다.

먼저, RxJS를 설치하고 임포트합니다. 이후에는 옵저버블과 옵저버를 생성하고 이들을 연결하기 위해 Subscription을 사용합니다.

// RxJS 라이브러리 임포트
import { Observable } from 'rxjs';

// 옵저버블 생성
const observable = new Observable(subscriber => {
  subscriber.next('Hello'); // 데이터 전달
  subscriber.next('World'); // 데이터 전달
  subscriber.complete();    // 데이터 전달 완료
});

// 옵저버 생성
const observer = {
  next: value => console.log(value),     // 데이터 처리
  error: error => console.error(error),  // 에러 처리
  complete: () => console.log('Complete')// 완료 처리
};

// 옵저버블과 옵저버를 연결하고 Subscription 반환
const subscription = observable.subscribe(observer);

// 일정 시간 후에 구독 취소
setTimeout(() => {
  subscription.unsubscribe();
}, 2000);

이 코드에서 observable은 데이터 스트림을 생성하고, observer는 해당 데이터를 처리하는 로직을 정의합니다.

subscription은 옵저버블과 옵저버 간의 연결을 나타내며, subscribe() 메서드로 생성됩니다.

이렇게 생성된 subscription을 사용하여 옵저버블의 데이터 스트림을 감시하다가 필요할 때 구독을 취소할 수 있습니다.

위 코드에서는 setTimeout 함수를 사용하여 2초 후에 subscription.unsubscribe()를 호출하여 구독을 취소하도록 설정했습니다.

이로써 옵저버블의 데이터 전달은 중단되며, 더 이상 데이터나 완료 이벤트가 처리되지 않습니다.

요약하면, "subscription"은 옵저버블과 옵저버 간의 연결을 나타내며, 옵저버블에서 발생하는 데이터나 이벤트를 옵저버가 처리하게 합니다.

이를 통해 데이터의 흐름을 관리하고, 필요한 시점에 구독을 취소하여 자원을 관리할 수 있습니다.

profile
_serendipity

0개의 댓글