옹재
소소한 개발 블로그
옹재
전체 방문자
오늘
어제
  • 분류 전체보기 (66)
    • 개발 관련 서적 스터디 (6)
    • 프론트엔드 스터디 (36)
      • Javascript (16)
      • Typescript (13)
    • Vue 스터디 (22)
    • 개발 관련 스터디 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CSS
  • 프론트엔드 스터디
  • 프레임워크 없는 프론트엔드 개발
  • scss
  • 개발서적 스터디

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
옹재
개발 관련 서적 스터디

함수, Observable, Promise

개발 관련 서적 스터디

함수, Observable, Promise

2022. 3. 20. 17:21
728x90
반응형

함수와 Observable의 공통점

const xhr = new XMLHttpRequest();
xhr.onload = function(e) {
  afterAjaxResult = JSON.parse(xhr.responseText);

  const result = foo(atferAjaxResult);
  console.log(result);
}
const {interval} = rxjs;
const numbers$ = interval(100);

numbers$.subscribe(value => console.log(value));

함수와 observable은 데이터를 받는 시점을 지연할 수 있다. 함수는 넘겨줄 파라미터가 아직 존재하지않거나 준비되지 않았을 때, Observable은 subscribe를 호출하기 전까지 데이터를 전달하지 않는다. 이런 식으로 데이터를 받을 시점을 지연시킬 수 있다는 공통점이 있다.

함수와 Observable이 다른 점이 있다면 함수는 호출 시 반환값이 딱 한 개인 반면에 Observable은 next()를 호출해 구독 이후 여러개의 데이터를 전달 할 수 있다. 또한 함수는 개발자가 데이터를 요청하는 pull 방식이라면, Observable은 변할 때마다 데이터가 전달되는 push 방식이다.

 

Promise와 Observable

 

Promise와 Observable은 유사한 면이 많다. Promise도 Observable과 마찬가지로 구독 형태를 띄우고 있다. 하지만 Promise는 정의부가 생성 시 딱 한번 호출되고, Observable의 complete와 같은 취소를 위한 인터페이스가 없다. (취소와 같은 동작을 하도록 할 수는 있음 번거로울 뿐)

 

또한 then이 호출될 때에 이미 결정된 상탯값만을 반환하기 때문에 동일한 값만 계속 받을 수 있다. 사용자에게는 lazy하게 보일 수 있지만 원칙적으로는 lazy하다고 하기 힘들다.

 

 

구분 함수 Observable Promise
정의 함수 선언 Observable 객체 생성 Promise 객체 생성
호출 함수 호출 subsribe then
호출시 정의부 실행 여부 매번 정의부 실행 매번 정의부 실행 생성 시 단 한번 호출
지연(lazy) 가능 여부 O O X (정해진 상태값만 호출)
데이터 한 개  여러 개 한 개
에러처리 지원 별도로 없음 error  reject
취소 지원 x o x
전달 방식 pull push push

 

 

Pull vs Push

 

Pull 

  • 개발자가 주도적으로 데이터의 상태를 확인하고 관리.  but 데이터의 변경 여부를 주기적으로 확인해야함

 

Push 

  • 데이터를 전달하는 주체의 상태에 관심을 둘 필요가 없음. 
  • 관심있는 데이터에 한정하여 데이터 관리 가능 => 데이터의 거부권을 가지고 있다
  • 데이터 처리에 따른 오류 처리가 필요 없음 ( 데이터가 전달되었을 때 처리되기 때문에)
  • 리액티브하다. (데이터의 변경에 Pull보다 빠르게 반응하고 자동으로 다른 객체에도 전달할 수 있기 때문)

 

728x90
반응형

'개발 관련 서적 스터디' 카테고리의 다른 글

[RxJS] Subjects  (0) 2022.04.03
[RxJS] RxJs가 나온 이유???  (0) 2022.03.09
프레임워크 없는 프론트엔드 개발 3장(DOM 이벤트 관리)  (0) 2021.04.27
프레임워크 없는 프론트엔드 개발 2장(렌더링)  (0) 2021.04.15
프레임워크 없는 프론트엔드 개발 1장(프레임워크에 대한 이야기)  (0) 2021.04.14
    '개발 관련 서적 스터디' 카테고리의 다른 글
    • [RxJS] Subjects
    • [RxJS] RxJs가 나온 이유???
    • 프레임워크 없는 프론트엔드 개발 3장(DOM 이벤트 관리)
    • 프레임워크 없는 프론트엔드 개발 2장(렌더링)
    옹재
    옹재

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.