๋ฐ์ํ
debounce
- debounce๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์๊ฐ (timespane) ๋ด์ ๋ฐฉ์ถ๋๋ ๊ฐ์์ ๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ์ ๋ฐฉ์ถํจ
- ์ด๋ฒคํธ๊ฐ ๋ฐฉ์ถํ๊ณ ๋๋ฉด timespane์ ์ด๊ธฐํ ๋จ
- ์ฃผ๋ก ์ฌ์ฉ์๊ฐ ๊ฒ์ํ๋์์ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ ๋๋ง๋ค ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ๋ณด์ฌ์ฃผ๊ธฐ ๋ณด๋ค๋ debounce๋ก timespane ๋ด์ ๋ง์ง๋ง ์ ๋ ฅ์ ๋ํด ๊ฒฐ๊ณผ๊ฐ์ ๋ณด์ฌ์ค ์ ์์
distinctUntilchanged
- ์ค๋ณต๋ ๊ฐ์ด ์ ๋ ฅ๋๋ฉด ํด๋น ๊ฐ์ ๋ฌด์ํจ
- ์ฌ์ฉ์๊ฐ ํ ์คํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ ฅํ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ฒ์์ ์ ๋ ฅ๋ ํ ์คํธ๋ง ๋ฐฉ์ถ๋จ
- UITextField์ ๊ฒฝ์ฐ .allEditingEvents์ ์ํด ์ ๋ ฅ ์์, ์ ๋ ฅ๋ ๊ฐ์ ์์ , ์ ๋ ฅ ๋์ผ ๋ ๊ฐ์ ๋ฐฉ์ถํ๊ฒ ๋จ. distinctUntilChnaged ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ ๋ ฅ๋ ๊ฐ์ ๋ณํ๊ฐ ์ผ์ด๋์ผ ๋ฐฉ์ถ๋๋ฏ๋ก ์ ๋ ฅ์ด ๋๋ ๋, ์์ ์ ์์ํ ๋ ๊ฐ์ ๋ฐฉ์ถํ์ง ์์
- (app์์ l ์ ๋ ฅ -> appl -> ์์ ๋ -> appl ์ด๋ฏ๋ก ๋ฐฉ์ถ๋ ๊ฐ์ด ์ด์ ๋ฐฉ์ถ๋ ๊ฐ๊ณผ ๊ฐ์ -> distinctUntilChnaged์ ์ํด ๊ฐ์ด ๋ฐฉ์ถ๋์ง ์์)
skip
- UITextField์ ์์ ์ด ์์๋ ๋ ์ฒ์ ๋น ๊ฐ์ ์คํตํด์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ skip(1) ์ฌ์ฉํ ์ ์์
share
- ๊ตฌ๋ ์๊ฐ ์์ ๋ ๋ฒํผ๋ฅผ ์ ์งํ ๋ค ๊ตฌ๋ ์ด ์์๋๋ฉด ์๋ก์ด ๊ตฌ๋ ์๋ ์ฆ์ง ๋ฒํผ์ ๊ฐ์ ์ฌ์ฉํ ์ ์์
- ๊ตฌ๋ ํ ๋๋ง๋ค ์๋ก์ด ๊ฐ์ ๋ฐฉ์ถํ์ง ์์
์์ฑ ์ฝ๋
let searchObservable = input.searchText
.debounce(.milliseconds(300))
.distinctUntilChanged()
.skip(1)
.asObservable()
.share(replay: 1, scope: .whileConnected)
์ถ์ฒ ๋ฐ ์ฐธ๊ณ ์ฌ์ดํธ
https://reactivex.io/documentation/ko/operators/debounce.html
728x90
๋ฐ์ํ
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] PreviewProvider ์บ๋ฒ์ค์์ ๋คํฌ ๋ชจ๋ ๊ฐ์ด ๋ณด๊ธฐ (0) | 2022.11.17 |
---|---|
[RxSwift] RxDataSources๋ก UITableView ์ ๋ฐ์ธ๋ฉ ํ๊ธฐ (0) | 2022.10.10 |
[RxSwift] Traits์ Single๊ณผ Service for Network (0) | 2022.10.09 |
[RxSwift] Input Output ViewModel with MVVMC (0) | 2022.10.09 |
[RealmSwift] Migration, ์ด์ ์ค์ธ ์ฑ์ ํ๋ ์ถ๊ฐํ ํ ๋ง์ด๊ทธ๋ ์ด์ ํด์ฃผ๊ธฐ (0) | 2022.10.02 |
๋๊ธ