forEach
원소마다 함수를 한 번씩 실행합니다. 오로지 부수 효과를 위한 연산자입니다.
강의
forEach는 Dart다운 이름이고, fxdart는 FxTS식 표기인
each도 함께 받습니다 — 같은 연산자입니다.
toList와 마찬가지로 종결 연산자여서,
호출하는 순간 체인 전체를 통해 모든 값을 끌어당깁니다. 차이는 그 값들을
가지고 무엇을 하느냐입니다. List로 모으는 대신 값마다
f를 실행하고 void를 반환합니다. 출력이나 로깅,
데이터베이스 쓰기처럼 효과를 일으키는 것이 목적이고 값 자체는 다시 받을
필요가 없을 때 쓰면 됩니다.
동기 체인의 .forEach(f)는 Fx가 물려받은
Dart 자체의 Iterable.forEach입니다. 비동기 체인과
data-first forEach(f, iterable) 형태는 fxdart가 제공하므로,
어디서든 같은 이름으로 읽힙니다.
forEachAsync(또는 FxAsync 체인의
.forEach())는 모든 원소에 대해 f를 await하되,
원소가 도착한 순서를 엄격히 지킵니다 — 개별 호출 중 일부가 더 빨리
끝날 수 있더라도 forEach는 언제나 한 번에 하나씩 순차로
처리합니다. 겹쳐서 실행하고 싶다면 .forEach() 앞의 상류에
.concurrent(n)을 추가하세요.
데모 1 · 기본
데모 2 · 비동기, 엄격한 순서 보장
각 원소가 서로 다른 시간만큼 잠들더라도
forEachAsync는 여전히 1, 2, 3 순서로 처리합니다 — 순서가
뒤바뀌는 일은 없습니다:
직접 해 보기
연습: forEach로 주문마다 영수증 한 줄을 출력하면서
누적 합계를 계산해 보세요.