RX

똘이주인·2021년 9월 13일
0

ReactiveX

목록 보기
1/1

우선 ReactiveX가 무엇인가?

ReactiveX의 풀네임은 'Reactive eXtensions'

reactive : 반응을 보이는 , extension: (세력, 영향력, 혜택 등의) 확대
ReactiveX가 반응을 확장한다는 의미를 가지고 있다는 것을 알 수 있다.

Rx = ReactiveX 줄임말
참조 : reactivex

참조 링크를 들어가면 보이는 이미지

Marble Diagram(마블 다이어그램)이다.
마블다이어그램은 RX의 기능을 사용할 때, 그 기능의 이해에 도움이 되기 위한 도표라고 생각하면될듯!!
처음에 그림을 잘 보지 않았는데..ㅠ 그림을 보며 이해하는게 훨씬 이해가 잘 되었다. 마블다이어그램은 밑에서 다시 정리하겠다.

여튼, 참조링크를 보면

두 목록이 보이는데, 오른쪽에 LANGUAGES의 밑 여러가지 RX가 붙은 것들이 있다.
  → 바로 Rx를 어느 플랫폼에서나 쓸 수 있게 해주는 것.
Rx는 각 플랫폼마다 지원하는 시리즈, 정확히는 라이브러리가 존재하기 때문.

iOS 플랫폼에서 Rx를 사용할 수 있게 해주는 RxSwift,
Android 플랫폼에서 Rx를 사용할 수 있게 해주는 RxJava

다음 왼쪽의 DOCUMENTATION
밑에 Observable, Operators, Single, Subject, Scheduler 이 다섯가지가 Rx의 주요 기능이다.
이중에서도 가장 중요한 것은 바로 Observable인데.
그럼 Observable과 옵저버블 스트림과 연관이 있나?
 = OK

예를들어보자.

**상황**
  1.오직 한 방향으로만 흐르는 강(stream)이 있다.
  2. 물고기(value)는 강(stream)의 흐름방향으로 흘러간다.
  3. 강에는 가끔 쓰레기(value)도 흘러간다.
**목표**
  'rx'라는 강에서 물고기를 건져, 회를 뜬다음, 팔아야 한다.
**내가 한 일**
  강에서 자동으로 물고기만 건져(filter) 회로 변환(map)하는 'A'시스템을 만들었다.
  이 시스템은 사용자가 버튼을 누를 시(subscribe) 가동된다.

스트림은 주로 강으로 비유된다.
상식적으로 강은 한 방향으로만 흐르며, 우리가 무언가를 하지 않는 이상 아무 일도 생기지 않는다
이것이 강과 스트림을 비유하는 이유이다.
어떠한 이벤트 스트림이 있다고 해도, 그것만으로는 아무 일도 일어나지 않는다.


Observable도 강이라고 생각하시면 된다.
하지만
Observable은 강이지만, 특정한 강을 지칭할 때 사용한다고 생각하시면 된다.
다 같은 강이지만 한강, 낙동강처럼 특정한 강이 있다.
스트림은 포괄적인 느낌이며, Observable은 스트림이지만, 특정 스트림을 의미한다고 생각하면 된다.

'A'시스템을 가동하기 위해서는 버튼을 눌러야 한다.
이 버튼을 누르는 행동인 subscribe 즉, 구독을 함으로써 시스템이 가동이된다.
하지만 우리는 그냥 강이 아닌 'rx'라는 강에서 가동이 되야한다.

그래서 우리는 'A'시스템을 'rx'강에서 가동하기 위해, 'rx'라는 Observable을 구독해야 한다.
강은 수없이 많다. 그 수많은 강 중에서 특정한 강(Observable)을 구독해야 시스템은 그 강에서 가동될 것이다.
그리고 Observable을 구독하지 않는 이상 아무 변화가 일어나지 않을 것이다.

Operators는 스트림에 흐르는 값(value)을 가공하는 장치다.
위 퀘스트에서 우리는 물고기만 건져 회로 변환한다고 했다.
장치(Operators)의 기능 중 물고기만을 건지게 해 주는 건 filter, 회로 변환하는 건 map.
Operators안에 filter와 map과 같은 기능들이 있다고 생각하면 된다.

코드로 보면

0개의 댓글