티스토리 뷰

728x90
반응형

[1] debounce

- 타이머를 지정해두고 타이머가 끝난 시점에 가장 최근의 값을 방출해준다. 

- 이벤트가 방출될때마다 타이머가 초기화된다. 

- 사용예제: 타이머를 2초로 지정해두면, 사용자가 버튼을 폭풍 누르다가 더이상 버튼을 안누르고 2초가 지날때 가장 마지막 클릭 이벤트를 준다. 


[2] throttle

- 타이머를 지정해두고 이벤트가 처음 방출되면 타이머 동안 어떤 이벤트도 방출되지 않는다. 

- 이벤트가 방출될때마다 타이머가 초기화되지 않는다. 

- 사용예제: 타이머를 2초로 지정해두면, 사용자가 버튼을 폭풍 누를때 처음 클릭 이벤트만 주고 2초동안 어떠한 클릭이벤트도 주지 않는다. (다만 latest를 어떻게 설정해주냐에 따라 조금 다른데 밑에서 확인!_!) 

 

[2.1] throttle latest = true 일때 

 

 

[2.2] throttle latest = false 일때 

 

 


latest가 true이면 trottle에서 지정해준 타이머가 끝나는 시점에 발행된 마지막 값을 가져오고 false면 안가져온다 

 

코드를 그림으로 표현해보면 다음과 같다 

 

 

 

 

 

[3] 읽어보면 좋은 글

https://ehdrjsdlzzzz.github.io/2019/05/24/RxSwift-7/

 

 

RxSwift (7)

iOS를 공부하며 익힌 것을 기록합니다.

ehdrjsdlzzzz.github.io

Rx사이트에 있는 그림보다 여기 블로그 그림이 더 이해가 쉽다...! 설명도 좋다 감사합니다 👏

다만 throttle은 latest=true일때랑 false일때랑 그림이 없어서(true일때 그림만 있음...ㅠㅠ) 

 

 

 

 

https://medium.com/fantageek/throttle-vs-debounce-in-rxswift-86f8b303d5d4

 

Throttle vs Debounce in RxSwift

When I went to reactivex.io, I got a whole lot of confusion between the terms throttle and debounce in the reactive programming world. I…

medium.com

두 개의 연산자는 어떤 상황에서 유용하게 쓰이는지 알려주는 좋은 글

(사용자가 버튼을 막 눌러서 API Call이 엄청 많이 되는 것을 방지하기 등)

반응형
댓글