rights, lefts & separated

Either 값의 이벤트 체인을 위한 Either 인식 연산자 — 한쪽만 풀거나, 양쪽을 한 번에 가릅니다.

FxEvents<R> FxEvents<Either<L, R>>.rights() FxEvents<L> FxEvents<Either<L, R>>.lefts() (FxEvents<L> failures, FxEvents<R> successes) FxEvents<Either<L, R>>.separated()

강의

체인이 FxEvents<Either<L, R>>가 되면 — attemptmapEither에서 — 이 세 연산자는 FxEitherOps의 푸시 쪽 짝입니다. rights()는 성공만, 풀어서 남기고; lefts()는 실패만, 풀어서 남기고; separated()(failures, successes)로 가릅니다 — Either 모양의 partition입니다.

터미널은 여기 없습니다. pull()이 체인을 FxAsync에 넘기고, 거기에는 이미 sequence()flattenOrAccumulate()가 있습니다. 이 연산자들은 이벤트 레이어에 머물러, UI가 성공과 실패를 두 피드로 들을 수 있게 합니다.

separated()partition의 수명 규칙을 물려받습니다. 레코드는 즉시 반환되고, 어느 쪽이든 듣기 시작하면 소스가 시작되고, 양쪽을 취소하면 소스가 취소되고, 아무도 듣지 않는 쪽에 속한 값은 버퍼되지 않고 버려집니다.

partition의 에러 팬아웃도 물려받습니다. 에러 이벤트Either가 아니므로 지금 듣고 있는 모든 쪽으로 갑니다 — 위쪽 실패 하나가 양쪽 반에 나타납니다. 실패를 한 번만, failures 반의 Left로 세려면 위쪽에 attempt를 두세요.

데모 1 · rights와 lefts

데모 2 · separated가 양쪽 반을 가릅니다

직접 해 보기

연습: 에러 이벤트는 양쪽 반으로 퍼지고, 위쪽 attempt는 한 번만 셉니다.

관련 항목: Either × 파이프라인 — 풀 쪽 쌍둥이, 그리고 sequenceflattenOrAccumulate · partitionseparated()의 술어 사촌 · attempt — 에러 이벤트를 변환해 failures 반에서 한 번만 세기