enhanced-all-settled
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

enhanced-all-settled

A better implementation of JS internal Promise.allSettled

Usage

const waitFor = async (milliseconds?: any): Promise<string> => {
  if (!milliseconds) {
    throw new Error('no duration provided');
  }

  await new Promise(resolve => setTimeout(() => resolve(milliseconds), 0));

  return `succesfully awaited ${milliseconds} ms`;
};

const settledOptions = { logStack: false };

const inputValues = [13, 79, undefined, 'blabla'];

const settled = await enhancedAllSettled(waitFor, settledOptions)(inputValues);

//  settled = {
//     rejected: [
//       {
//         inputValue: undefined,
//         reason: 'no duration provided',
//       },
//       {
//         inputValue: 'blabla',
//         reason: 'only numbers are allowed',
//        },
//     ],
//     successful: [13, 79],
//     results: ['succesfully awaited 13 ms', 'succesfully awaited 79 ms'],
//   };

Features

  • More consistent types that you can actually import in your code (for typescript users)

  • Explicit returns of inputs corresponding to rejected / successful executions

  • Works even in the browser and for old Node.js versions

  • Better mapping to failure reasons (in the classic node implementation, errors instantiated with the Error constructor are mapped to reason: false, which is not very helpful)

  • Optional logging of the entire stack of errors for better debugging

Roadmap

Add options for :

  • Setting a timeout upon which promises are considered to be failing by default

  • A second function to use if you're only interested in successful promises' output

  • Optional providing of your own error logging function

Package Sidebar

Install

npm i enhanced-all-settled

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

14.1 kB

Total Files

13

Last publish

Collaborators

  • moaadf