delay & sleep
잠시 기다렸다가 값을 내놓거나(delay), 그냥 기다리기만 합니다(sleep).
Future<T> delay<T>(Duration wait, T value)
Future<void> sleep(Duration wait)
강의
delay(wait, value)는 wait가 지난 뒤
value로 완료되는 Future를 반환합니다.
sleep(wait)은 반환할 값이 없다는 점만 다릅니다 — 그저
주어진 시간이 지나면 완료됩니다. 둘 다 Future.delayed를
얇게 감싼 것이며, 느린 작업을 흉내 낼 때 가장 먼저 꺼내 쓰게 되는
도구입니다. 네트워크 호출, 데이터베이스 쿼리처럼 시간이 걸리고
결국 결과를 내놓는(또는 내놓지 않는) 모든 작업 말입니다.
이 두 함수는 이 튜토리얼 사이트 전반의 거의 모든 비동기 데모를
떠받치는 뼈대입니다. mapAsync, concurrent,
debounce, throttle을 Stopwatch와
함께 보여 주면서 병렬로 실행됐다거나 속도가 제한됐다는 것을 증명하는
장면이 나오면, 실제로 기다리는 일을 하고 있는 것은 언제나
delay 아니면 sleep입니다.
데모 1 · 기본
데모 2 · 동시 작업 흉내 내기
각각 150ms가 걸리는 "요청" 세 개를 동시에 실행하면, 전체 묶음은 450ms보다 한참 짧은 시간에 끝납니다.
직접 해 보기
연습: delay로 'pong'을 반환하는 100ms짜리
"fetch"를 흉내 내 보세요.
관련 항목:
memoize — 지연된 Future를 캐시해 한 번만 기다리게 만듭니다 ·
concurrent — 여러 delay를 병렬로 실행 ·
debounce / throttle — 기다림 위에 세운 속도 제한 ·
toAsync — 평범한 Iterable을 비동기 파이프라인으로