withLatestFrom

소스 이벤트가 올 때마다, 그 이벤트와 다른 스트림의 최신 값에 대한 combine 결과를 내보냅니다 — 다른 쪽은 트리거가 아니라 컨텍스트입니다.

FxEvents<R> FxEvents<T>.withLatestFrom<U, R>(Stream<U> other, R Function(T a, U b) combine) // chain (events)

강의

요청이 발화하면 바로 그 순간 유효했던 설정 버전을 함께 실어야 합니다. 주문이 들어오면 지금 이 순간의 환율로 가격을 매겨야 합니다. 두 스트림이 관여하지만 둘은 대등하지 않습니다: 한쪽이 이끌고, 다른 쪽은 참조됩니다. withLatestFrom(other, combine)이 그 비대칭을 표현합니다 — 각 소스 이벤트는 combine(event, latestOfOther)를 내보내고, other의 이벤트는 기억된 값을 갱신할 뿐 아무것도 내보내지 않습니다.

이 한쪽 방향성이 양쪽 모두 트리거하는 combineLatest와의 차이 전부입니다. 이렇게 물어서 고르세요: 설정 갱신이 그 자체로 출력을 만들어야 하나요? 그렇다면 combineLatest, 설정이 요청이 마침 발화할 때에만 의미가 있다면 withLatestFrom입니다.

가장자리를 솔직하게 짚어 둡니다. other가 아직 아무것도 만들어 내기 전에 발화한 소스 이벤트는 버려집니다 — 도장 찍을 최신 값이 없기 때문입니다(그 손실이 곤란하다면 otherstartWith 시드를 주세요). 수명은 소스를 따릅니다: 소스가 닫히면 체인이 닫히고, other의 닫힘은 그냥 무시됩니다 — 컨텍스트 쪽의 라이브 피드가 파이프라인을 붙들어 두는 일은 없습니다. fxdart 이벤트 계층이며, Rx의 같은 이름 연산자를 따랐습니다.

데모 1 · 요청에 현재 설정 도장 찍기

데모 2 · 다른 쪽은 트리거하지도, 막지도 않는다

직접 해 보기

연습: 각 주문을 그 순간의 환율로 가격 매기기.

관련 항목: combineLatest — 양쪽 모두 트리거 · sampleOn — 결합 없이 트리거-와-최신 아이디어 · fxEvents — 컨텍스트 쪽에 시드를 주는 startWith