sfcode An Online Competing and Development Environment

p-locate

> Get the first fulfilled promise that satisfies the provided testing function

Think of it like an async version of `Array#find`.

# Install

$ npm install p-locate

# Usage

Here we find the first file that exists on disk, in array order.

const pathExists = require('path-exists');
const pLocate = require('p-locate');
const files = [
'unicorn.png',
'rainbow.png', // Only this one actually exists on disk
'pony.png'
];
(async () => {
const foundPath = await pLocate(files, file => pathExists(file));
console.log(foundPath);
//=> 'rainbow'
})();

*The above is just an example. Use `locate-path` if you need this.*

# API

## pLocate(input, tester, [options])

Returns a `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`.

### input

Type: `Iterable<Promise | unknown>`

An iterable of promises/values to test.

### tester(element)

Type: `Function`

This function will receive resolved values from `input` and is expected to return a `Promise<boolean>` or `boolean`.

### options

Type: `Object`

#### concurrency

Type: `number`
Default: `Infinity`
Minimum: `1`

Number of concurrently pending promises returned by `tester`.

#### preserveOrder

Type: `boolean`
Default: `true`

Preserve `input` order when searching.

Disable this to improve performance if you don't care about the order.

# Related

- p-map - Map over promises concurrently
- p-filter - Filter promises concurrently
- p-any - Wait for any promise to be fulfilled
- More…

# License

MIT © Sindre Sorhus