promise-map-first
v1.0.0
Published
Get the value of the first promise in a series to resolve
Downloads
3
Readme
promise-map-first
Get the value of the first promise in a series to resolve
Runs a series of promises sequentially while iterating through a value, ignoring rejections, and returns the value of the first promise in the series to resolve.
Use this like an asynchronous for
loop, where the condition is a Promise's resolve/reject mechanism.
Installation
npm install promise-map-first
Usage
const first = require('promise-map-first');
const pify = require('pify');
const readFile = pify(require('fs').readFile);
const files = [
'one.jpg',
'two.txt', // <-- this file exists
'three.mov', // <-- this file also exists
];
first(files, file => readFile(file)).then(res => {
// res.index is 1
// res.value is the contents of two.txt
});
API
first(input, fn)
Iterate over input
by calling fn
for each item in the series. The function should return a promise. Each promise is called sequentially. If a promise rejects, the next one is called. If a promise resolves, the value is returned, and no further functions are called.
- input (Iterable): items to iterate through.
- fn (Function): iterating function. Should return a promise. Takes these parameters:
- value: value of current item.
- index (Integer): index of current item.
- array (Iterable): collection being iterated through.
Returns a Promise which resolves as soon as a promise in the series resolves. The promise contains an object with these properties:
- index (Integer): index of the item being referenced when the first promise resolved.
- value: value contained in the first resolved promise.
Local Development
git clone https://github.com/spacedoc/promise-map-first
cd promise-map-first
npm install
npm test
License
MIT © Geoff Kimball