Skip to content

timeout

지정된 시간 후에 TimeoutError를 발생시키는 Promise를 반환해요.

typescript
await timeout(ms);

레퍼런스

timeout(ms)

특정 시간이 지난 후 타임아웃 에러를 발생시키고 싶을 때 timeout을 사용하세요. 다른 Promise와 Promise.race()를 함께 사용해서 작업에 시간 제한을 걸 때 유용해요.

typescript
import { timeout } from 'es-toolkit/promise';

// 기본 사용 - 1초 후 TimeoutError 발생
try {
  await timeout(1000);
  console.log('이 코드는 실행되지 않아요');
} catch (error) {
  console.log('타임아웃 에러 발생:', error.message); // 'The operation was timed out'
}

Promise.race()와 함께 사용해서 작업에 시간 제한을 걸 수 있어요:

typescript
async function fetchWithTimeout(url: string) {
  try {
    const result = await Promise.race([
      fetch(url),
      timeout(5000), // 5초 제한
    ]);
    return result;
  } catch (error) {
    if (error.name === 'TimeoutError') {
      console.log('요청이 너무 오래 걸립니다');
    }
    throw error;
  }
}

여러 비동기 작업 중 하나라도 정해진 시간 안에 완료되지 않으면 전체 작업을 실패시키고 싶을 때도 사용할 수 있어요.

typescript
async function multipleOperationsWithTimeout() {
  try {
    await Promise.race([
      Promise.all([fetch('/api/data1'), fetch('/api/data2'), fetch('/api/data3')]),
      timeout(3000), // 전체 작업에 3초 제한
    ]);
    console.log('모든 작업이 제시간에 완료되었습니다');
  } catch (error) {
    console.log('작업이 제시간에 완료되지 못했습니다');
  }
}

파라미터

  • ms (number): TimeoutError가 발생하기까지의 밀리초 단위 시간이에요.

반환 값

(Promise<never>): 지정된 시간 후에 TimeoutError로 거부되는 Promise를 반환해요.

에러

지정된 시간이 지나면 TimeoutError를 던져요.

MIT 라이선스에 따라 배포됩니다.