es-toolkit
Version:
A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.
29 lines (27 loc) • 1.03 kB
text/typescript
/**
* Executes an async function and enforces a timeout.
*
* If the promise does not resolve within the specified time,
* the timeout will trigger and the returned promise will be rejected.
*
*
* @template T
* @param {() => Promise<T>} run - A function that returns a promise to be executed.
* @param {number} ms - The timeout duration in milliseconds.
* @returns {Promise<T>} A promise that resolves with the result of the `run` function or rejects if the timeout is reached.
*
* @example
* async function fetchData() {
* const response = await fetch('https://example.com/data');
* return response.json();
* }
*
* try {
* const data = await withTimeout(fetchData, 1000);
* console.log(data); // Logs the fetched data if `fetchData` is resolved within 1 second.
* } catch (error) {
* console.error(error); // Will log 'TimeoutError' if `fetchData` is not resolved within 1 second.
* }
*/
declare function withTimeout<T>(run: () => Promise<T>, ms: number): Promise<T>;
export { withTimeout };