es-next-tools
Version:
A comprehensive utility library for JavaScript and TypeScript that provides a wide range of functions for common programming tasks, including mathematical operations, date manipulations, array and object handling, string utilities, and more.
16 lines (15 loc) • 796 B
JavaScript
import { timeout } from './timeout';
/**
* Settles all promises with a timeout.
* @param {Promise<T>[]} promises - An array of promises to settle.
* @param {number} ms - The timeout in milliseconds.
* @returns {Promise<PromiseSettledResult<T>[]>} A promise that resolves to an array of settled results.
* @template T
* @example
* const promises = [Promise.resolve(1), Promise.reject('error'), new Promise(resolve => setTimeout(() => resolve(2), 2000))];
* const results = await allSettledWithTimeout(promises, 1500);
* // [{ status: 'fulfilled', value: 1 }, { status: 'rejected', reason: 'error' }, { status: 'rejected', reason: Error('Promise timed out after 1500ms.') }]
*/
export function allSettledWithTimeout(promises, ms) {
return timeout(Promise.allSettled(promises), ms);
}