안녕하세요
Observable에서 발행되는 아이템들을 필터링 및 결합하는 연산자에 대해 알아보겠습니다
필터링 연산자
💡 debounce
• 아이템이 발행되고 🕒 동안 다른 아이템이 발행되지 않을 때, 마지막 아이템을 발행
💡 throttleFirst
• 일정 시간마다 첫번째 이벤트만 가져옴
• 첫번째 이벤트를 가져오고 나면 🕒 내의 다른이벤트는 무시
💡 throttleLast / sample
• 일정 시간마다 가장 최근 이벤트만 가져옴
📌 debounce, throttleFirst, throttleLast는 UI 컨트롤에 유용
💡 elementAt
• 특정 인덱스에 해당하는 아이템을 필터링
💡 filter
• 조건식이 true일때만 아이템 발행
💡 skip(n)
• observable이 발행하는 아이템 중 n개의 아이템을 무시하고, 그 이후부터 발행
💡 take(n)
• observable이 발행하는 아이템 중 처음부터 n개까지만 발행, 그 이후는 모두 무시 (skip과 반대)
💡 amb
• 여러 개의 Observable을 동시에 구독하는데, 그 중 가장 먼저 발행되는 Observable 선택 시 사용
val arr = ArrayList<Observable<String>>()
arr.add(Observable.just("A","B","C").delay(1, TimeUnit.SECONDS))
arr.add(Observable.just("가","나","다"))
arr.add(Observable.just("あ","い","う").delay(3000, TimeUnit.MILLISECONDS))
Observable.amb(arr).subscribe {
print(it)
}
//가나다 출력
결합 연산자
여러 Observable을 결합해 하나의 Observable로 만들어봅시다
여러 개의 Observable 결과를 한번에 처리할 때 유용합니다
💡 combineLast
• 여러 Observable 중 가장 최근에 발행한 아이템들을 결합해 하나로 발행 (최신값으로 갱신)
💡 zip
• 여러 Observable들을 발행한 순서에 맞춰 결합해 하나로 발행
💡 merge
• 여러 Observable을 하나의 스트림에 결합
val odds = Observable.just(1, 3, 5)
val evens = Observable.just(2, 4, 6)
Observable.merge(odds, evens)
.subscribe({
println("Next: $it")
},
{
println("Error: " + error.message)
})
'💻 프로그래밍' 카테고리의 다른 글
[🔥 Coroutine] #2 runBlocking , async (0) | 2022.11.05 |
---|---|
[🔥Coroutine] # 1 Coroutine을 배워봅시다 (0) | 2022.08.30 |
[RxJava] #4 Operators(2) 변형연산자 (0) | 2022.08.14 |
[RxJava] #3 Operators(1) 생성연산자 (0) | 2022.08.14 |
[RxJava] #2 Subject (0) | 2022.08.02 |