어느 표면?

표면은 넷, import는 하나. 일의 표면을 고르고, 그 위에 머무르세요.

// Pick the surface the job is. fx(iterable) // data in hand fx(ids).mapConcurrent(n, fetch) // bounded I/O, order kept fxEvents(stream) // values over time either((r) { … }) / .mapEither / .attempt // failures as values

강의

FxDart는 트렌치코트 안의 라이브러리 네 개가 아닙니다. 실제 프로그램이 이 일들을 가로지르기 때문에 한 패키지이고, 가로지를 때도 이름은 그대로입니다. 실수는 함수 목록에서 시작하는 것입니다. 일에서 시작하세요:

일이…여기서 시작하지 말 것
데이터는 이미 손에 있고, 그중 일부만 필요 fx(iterable) 한 줄짜리 map/where/take를 감싸기
아는 컬렉션 위의 I/O, 동시에 최대 n개, 순서는 유지 .toAsync().map(f).concurrent(n) 또는 .mapConcurrent(n, f) Future.wait(xs.map(f))
값이 도착할 때 도착 (키 입력, 틱, 소켓) fxEvents(stream) sleep을 넣은 pull 파이프라인
호출자가 실패를 다룸 이미 있는 표면 위의 either / mapEither / attempt 도메인 에러에 throw; 이유를 잃은 null

이름이 충돌하면 pull이 이깁니다. takeUntil은 FxTS의 술어이고, 이벤트 층의 짝은 stopOn입니다. 단어 하나, 뜻 하나. 이음새는 이름이 있습니다: .toAsync()는 데이터를 수요로 올리고, .pull()은 이벤트를 수요로 올리고, .toStream()은 반대 방향입니다.

0.8.10 채널 규칙. attempt다음 retryOn / retryOnError, 앞이 아닙니다. 그 연산자들은 에러 채널을 보고, 실패가 Left가 되면 거기에는 재시도할 것이 남지 않습니다.

표면을 가로지르는 일 두 가지는 제각기 튜토리얼입니다: 디바운스 검색 (시간 → 최신 질의 승리 → 타입 있는 파싱)과 한도 있는 동시 fetch (한도, 순서 유지, 실패는 모두 보관). pull 입문은 여전히 fx에서 시작합니다.

데모 · 일 넷, 표면 넷

import는 같습니다. 각 블록은 표의 그 행에 속하는 가장 작은 프로그램입니다:

관련: fx — pull 체인 · concurrent — I/O 한도 · fxEvents — push 체인 · 타입 있는 에러 — 값으로서의 실패 · 디바운스 검색 · 한도 있는 동시 fetch