어느 표면?
표면은 넷, 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