Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/p-settle
Settle promises concurrently and get their fulfillment value or rejection reason with optional limited concurrency
https://github.com/sindresorhus/p-settle
Last synced: about 1 month ago
JSON representation
Settle promises concurrently and get their fulfillment value or rejection reason with optional limited concurrency
- Host: GitHub
- URL: https://github.com/sindresorhus/p-settle
- Owner: sindresorhus
- License: mit
- Created: 2016-10-21T06:18:56.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2023-11-01T09:05:33.000Z (about 1 year ago)
- Last Synced: 2024-04-14T09:53:04.197Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 89
- Watchers: 6
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- promise-fun - p-settle
README
# p-settle
> Settle promises concurrently and get their fulfillment value or rejection reason with optional limited concurrency
## Install
```sh
npm install p-settle
```## Usage
```js
import fs from 'node:fs/promises';
import pSettle from 'p-settle';const files = [
'a.txt',
'b.txt' // Doesn't exist
].map(fileName => fs.readFile(fileName, 'utf8'));console.log(await pSettle(files));
/*
[
{
status: 'fulfilled',
value: 'π¦',
isFulfilled: true,
isRejected: false,
},
{
status: 'rejected',
reason: [Error: ENOENT: no such file or directory, open 'b.txt'],
isFulfilled: false,
isRejected: true,
}
]
*/
```## API
### pSettle(array, options?)
Returns a `Promise` that is fulfilled when all promises from the `array` argument are settled.
The objects in the array have the following properties:
- `status` *(`'fulfilled'` or `'rejected'`, depending on how the promise resolved)*
- `value` or `reason` *(Depending on whether the promise fulfilled or rejected)*
- `isFulfilled`
- `isRejected`#### array
Type: `Array | ((...args: any[]) => PromiseLike)>`
The array can contain a mix of any value, promise, and async function. Promises are awaited. Async functions are executed and awaited. The `concurrency` option only works for elements that are async functions.
#### options
Type: `object`
##### concurrency
Type: `number` (Integer)\
Default: `Infinity`\
Minimum: `1`The number of concurrently pending promises.
**Note:** This only limits concurrency for elements that are async functions, not promises.
### isFulfilled(object)
This is a type guard for TypeScript users.
This is useful since `await pSettle(promiseArray)` always returns a `PromiseResult[]`. This function can be used to determine whether `PromiseResult` is `PromiseFulfilledResult` or `PromiseRejectedResult`.
### isRejected(object)
This is a type guard for TypeScript users.
This is useful since `await pSettle(promiseArray)` always returns a `PromiseResult[]`. This function can be used to determine whether `PromiseResult` is `PromiseRejectedResult` or `PromiseFulfilledResult`.
## Related
- [p-reflect](https://github.com/sindresorhus/p-reflect) - Make a promise always fulfill with its actual fulfillment value or rejection reason
- [p-map](https://github.com/sindresorhus/p-map) - Map over promises concurrently
- [Moreβ¦](https://github.com/sindresorhus/promise-fun)