티스토리 뷰
728x90
반응형
Combining Operators 중 대표적인 두가지를 살펴보자
[ 1 ] withLatestFrom
ObservableType extension에 가보면
public func withLatestFrom<SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<SecondO.E> {
return WithLatestFrom(first: asObservable(), second: second.asObservable(), resultSelector: { $1 })
}
이렇게 구현되어있다
어떤 옵져버블 뒤에 withLatestFrom(Observable) 해주면 어떤 옵져버블의 이벤트가 발행될때마다 매개변수로 넘겨준 observable의 the latest element를 얻는다
예제를 보는 게 이해가 빠르다 --!
let button = PublishSubject<Void>()
let textField = PublishSubject<String>()
// button 이벤트가 발행될때마다 매개변수로 넘겨준 textField observable의 the latest element를 얻는다
let observable: Observable<String> = button.withLatestFrom(textField)
observable.subscribe(onNext: {
print($0)
})
textField.onNext("Par")
button.onNext(())
textField.onNext("Pari")
textField.onNext("Paris")
button.onNext(())
button.onNext(())
// 출력값
Par
Paris
Paris
withLatestFrom 순서를 거꾸로 해보면..ㅎㅎ
// textField 이벤트가 발행될때마다 button Observable의 가장 최근의 값을 얻는다
let observable: Observable<Void> = textField.withLatestFrom(button)
observable.subscribe(onNext: {
print($0)
})
textField.onNext("Par")
button.onNext(())
textField.onNext("Pari")
textField.onNext("Paris")
button.onNext(())
button.onNext(())
// 출력값
()
()
[ 2 ] combineLatest
let left = PublishSubject<Int>()
let right = PublishSubject<Int>()
let observable = Observable.combineLatest(left, right, resultSelector: {
lastLeft, lastRight in
"\(lastLeft) \(lastRight)"
})
observable.subscribe(onNext: {
print($0)
})
left.onNext(1)
right.onNext(4)
right.onNext(5)
left.onNext(2)
right.onNext(6)
left.onNext(3)
// 출력값
1 4
1 5
2 5
2 6
3 6
Reference
RayWenderlich - RxSwift
반응형
'🍏 > RxSwift' 카테고리의 다른 글
[RxSwift-Operator] share & share의 파라미터 replay와 scope..!! (0) | 2019.07.18 |
---|---|
[RxSwift-ControlProperty] ControlProperty의 orEmpty (0) | 2019.05.27 |
[RxSwift-Operator] reduce와 scan (0) | 2019.04.29 |
[RxSwift-Operator] Of와 From (0) | 2019.04.22 |
[RxSwift-Operator] Map과 FlatMap (1) | 2019.04.22 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- METAL
- flutter 앱 출시
- Watch App for iOS App vs Watch App
- 플러터 싱글톤
- flutter dynamic link
- drf custom error
- Sketch 누끼
- Flutter Clipboard
- github actions
- Flutter Text Gradient
- Flutter 로딩
- Django Heroku Scheduler
- 장고 URL querystring
- DRF APIException
- 플러터 얼럿
- flutter deep link
- PencilKit
- flutter build mode
- Django FCM
- Dart Factory
- Python Type Hint
- ribs
- 구글 Geocoding API
- ipad multitasking
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- cocoapod
- Flutter getter setter
- SerializerMethodField
- Flutter Spacer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함