2637. Promise Time Limit

Chobby·2024년 7월 1일
1

LeetCode

목록 보기
28/194

Promise.race를 써보기 좋은 예제이다.

물론 Promise를 하나 등록해서, 해당 Promise 내부에 setTimeout을 통한 reject도 가능하겠지만 코드가 복잡해진다.

type Fn = (...params: any[]) => Promise<any>;

function timeLimit(fn: Fn, t: number): Fn {
    return async function(...args) {
        // 타임아웃 시, reject될 Promise 선언
        const comparePromise = new Promise((_, reject) => setTimeout(() => reject("Time Limit Exceeded"), t))
        // 두 Promise 중 우선 완료되는 것을 실행
        return Promise.race([fn(...args), comparePromise])
    }
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글