windowOn, windowCount & windowEvery
중첩된 살아 있는 스트림: 창이 닫히기 전에 값을 보고, 개수로, 트리거로, 시계로 회전합니다.
강의
chunk는 창이 닫히기를
기다렸다가 List를 내보냅니다. window*
가족은 창이 아직 열려 있는 동안 내보냅니다: 바깥
스트림의 각 값이 중첩된 FxEvents이므로, 구독자는 닫히기
전에 이벤트를 볼 수 있습니다 — 지금 이 분의 살아 있는 차트, 현재
묶음의 누적. 그것이 전부이고, 반환 타입이
FxEvents<FxEvents<T>>인 이유입니다.
windowCount(size)는 size개 이벤트마다
회전합니다; startEvery가 size보다 작으면
겹치고, 크면 틈이 납니다. windowOn(boundaries)는
listen 즉시 창을 열고 트리거 값마다 회전합니다 — 경계의 완료는
무시되므로, 현재 창은 소스가 완료될 때까지 열려 있습니다.
windowEvery(span)는 시계 형태이고,
every는 그 주기로 겹치거나 틈을 내며,
maxSize는 개수로 창을 일찍 닫습니다.
수명은 RxJS 9를 따릅니다: 바깥을 취소하면 살아 있는 내부는
에러가 아니라 조용히 완료되어, 중첩 구독자가 깨끗이
내려옵니다. 소스 에러는 여전히 살아 있는 내부마다 에러를 낸 뒤
바깥에 냅니다. 그리고 내부가 스트림이므로, 마지막 값이 이전 창을
채우며 새 창이 열리면 끝의 빈 창이 생길 수 있습니다 —
chunk*는 그것을 건너뛰고, window*는
건너뛰지 않습니다.
chunkToggle(openings, closeOf)는
windowToggle의 리스트 가족 대응물입니다: 열림마다
버퍼가 시작되고, 그 열림의 closeOf에서 온 첫 이벤트가
그것을 내보내며, 빈 버퍼는
chunkOn처럼 건너뜁니다.
fxdart 이벤트 레이어, Rx의 window,
windowCount, windowTime,
bufferToggle을 따랐습니다.
데모 1 · 둘씩 창
데모 2 · 트리거로 회전
직접 해 보기
연습: 짧은 Duration을 걸친 살아 있는 내부.
chunk / chunkOn — 같은 창을 리스트로, 닫힐 때 내보내기 ·
windowed — 풀 레이어의 미끄러지는 리스트 ·
groupsBy — 시간이 아니라 값으로 키를 단 살아 있는 내부