pipe1

값에 함수 하나를 적용합니다. 값이 Future라면 먼저 await합니다.

FutureOr<R> pipe1<A, R>(FutureOr<A> a, FutureOr<R> Function(A a) f)

강의

pipe1pipe가 내부적으로 사용하는 한 단계짜리 빌딩 블록입니다. af를 적용하되, aFuture라면 먼저 await합니다. a가 평범한 값이면 f가 즉시 실행되고 pipe1f가 반환한 값을 그대로 — Future로 감싸지 않고 동기적으로 — 돌려줍니다.

핵심은 f 자신은 넘겨받은 값이 상류의 동기 작업에서 왔는지 비동기 작업에서 왔는지 알 필요도, 신경 쓸 필요도 없다는 점입니다 — pipe1이 그 차이를 대신 흡수해 줍니다. 값이 때로는 Future가 되는 상황(예: 앞선 비동기 단계의 결과)에서 다음 단계를 어느 쪽이든 똑같은 모습으로 쓰고 싶을 때 유용합니다.

한 단계만 처리하므로, 짧은 체인을 만들려면 pipe1 호출을 중첩하면 되고, 단계가 두어 개를 넘어가면 List<Function>을 받는 pipe를 쓰는 편이 낫습니다.

데모 1 · 평범한 값(Future가 아닌 값)

Future가 끼어들지 않으면 pipe1f(a)를 그대로 호출하고 평범한 값을 반환합니다.

데모 2 · Future를 먼저 await하기

aFuture라면 pipe1f를 호출하기 전에 await합니다 — 이런 호출을 몇 개 이어 붙이면 비동기 단계를 하나씩 조합할 수 있습니다.

직접 해 보기

연습: pipe1로 지연된 이름을 인사말로 바꿔 보세요.

관련 항목: pipe — pipe1로 만들어진 다단계 파이프라인 · fx — 타입이 유지되는 체인 대안 · delay & sleep — 위에서 쓴 비동기 헬퍼