티스토리 뷰
내용
- Rx 의 3요소(Observables, Operators, Schedulers) 에 대해서 알아보자.
RxSwift: Reactive Programming with Swift, Chapter 1: Hello, RxSwift!
위의 글을 번역 및 요약한 글입니다.
Rx 코드의 세 가지 building blocks 은 Observables, Operators, Schedulers 입니다.
Operators
ObservableType 과 Observable 클래스의 구현에는 비동기 작업과 이벤트 조작의 개별적인 부분을 추상화하는 많은 메서드가 포함되어 있으며 함께 구성되어 보다 복잡한 로직을 구현할 수 있습니다. highly decoupled and composable 하기 때문에 이러한 메서드들을 operators 라고 합니다.
이러한 operator 들은 대부분 비동기적인 입력을 받고 side effects 없이 출력만 생성하기 때문에 퍼즐 조각처럼 쉽게 서로 맞물려서 큰 그림을 그릴 수 있습니다.
예를 들어, (5 + 6) * 10 - 2 를 살펴봅시다.
명확하고 결정적인 방법으로 여러분들은 *, (), + , - 를 사전에 정의된 순서대로 데이터들에 적용하고 출력을 가져와서 해결될 때까지 표현식을 계속 처리할 수 있습니다.
비슷한 방식으로 Rx operators 를 Observable 에서 방출한 이벤트에 적용하여 표현식이 최종 값으로 해결될 때까지 입력과 출력을 처리할 수 있습니다. 그런 다음 side effect 를 일으킬 수 있습니다.
아래는 Rx operators 를 사용하도록 조정된 이전의 방향 변경 관찰에 대한 코드입니다.
UIDevice.rx.orientation
.filter { $0 != .landscape }
.map { _ in "Portrait is the best!" }
.subscribe(onNext: { string in
showAlert(text: string)
})
UIDevice.rx.orientation 이 .landscape 또는 .portrait 값을 생성할 때마다 RxSwift 는 filter 와 map 을 적용하여 방출된 데이터 조각에 적용합니다.

마지막에 subscribe 를 사용하면, 결과로 나오는 next 이벤트를 구독하고 String 값을 전달하고 화면에 텍스트와 함께 경고를 표시하는 메서드를 호출합니다.
operators 는 highly composable 합니다. 항상 데이터를 input 으로 사용하고, output 를 result 로 가져가므로 단일 연산자가 수행할 수 있는 것 보다 훨씬 많은 것을 달성하기 위해서 쉽게 체이닝하여 사용할 수 있습니다.
'iOS > RxSwift' 카테고리의 다른 글
| RxSwift) 3. App architecture & RxCocoa (0) | 2022.07.01 |
|---|---|
| RxSwift) 2-3. Rx 3요소 - Shedulers (0) | 2022.07.01 |
| RxSwift) 2-1. Rx 3요소 - Observables (0) | 2022.06.30 |
| RxSwift) why (0) | 2022.06.30 |
| RxSwift) 1.RxSwift의 개념 (0) | 2022.06.30 |
- Widget
- MOYA
- configurable widget
- watchOS
- SwiftUI
- containerBackground
- Notification
- WWDC
- UserDefaults
- MVVM
- WWDC22
- Swift
- Firebase
- urlsession
- Objective-C
- Protocol
- YPImagePicker
- CloneCoding
- 2022 KAKAO TECH INTERNSHIP
- WidgetKit
- Algorithm
- OpenSourceLibrary
- IOS
- RxCocoa
- rxswift
- projectsetting
- async/await
- APNS
- github
- 서버통신
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Total
- Today
- Yesterday