debounceOn, delayOn & throttleOn
선택자가 정하는 시간: 값마다 언제 내보낼지를 정하는 스트림을 고릅니다 — Duration 없이 debounce, delay, throttle.
강의
Duration 형태는 이미
debounce,
throttle,
delay에 있습니다 — 고정된
시계, 모든 값에 같은 대기. xOn 가족은 그 시계를
선택자에 넘깁니다: 값마다 스트림을 만들고, 그
스트림의 첫 이벤트가 값이 나갈 순간입니다. 300ms 대신 포커스가
떠나는 순간을 기다리고, 긴 검색어는 더 길게 디바운스하고, 타이머가
아니라 버튼이 눌릴 때 붙든 값을 풀어 주세요.
debounceOn(selector)는 그 스트림을 잠잠한 창으로 쓰는
트레일링 디바운스입니다. 더 새로운 값은 이전 내부를
중단하고 새것을 시작하며, 내부의 첫 next가 대기
중인 값을 내보내고, next 없이 완료된 내부는 그 값을
버립니다. 소스가 닫힐 때 아직 대기 중인 값은
흘려보내져, Duration
debounce와 같습니다.
delayOn(selector)는 모든 값을 자기 내부가
발화할 때까지 붙듭니다 — 중단이 없으므로, 선택자가 순서를 바꾸면
값도 순서를 바꿉니다. Rx의 delayWhen과 같습니다. 닫기는
아직 끝나지 않은 내부를 기다리고, 에러는 즉시 전달됩니다 — 붙들어
둘 가치가 있는 것은 데이터뿐이니까요.
throttleOn(selector)는 내부 창마다 이벤트를 최대 하나
내보냅니다: leading(기본 켜짐, 스트림 형태 throttle과
같음)은 창의 첫 값을 지키고, trailing은 내부가 발화할
때 — 또는 창 한가운데 소스가 닫힐 때 — 본 가장 새로운 값을
지킵니다. fxdart 이벤트 레이어, Rx의 선택자 형태
debounce, delayWhen,
throttle을 따랐습니다.
데모 1 · 버스트, 선택자가 발화할 때 풀기
데모 2 · 알림 스트림이 가라고 할 때까지 붙들기
직접 해 보기
연습: 내부 창마다 스크롤 오프셋 하나, 리딩 엣지.