await-reduce
Version:
Resolve and reduce an array of promises
49 lines (41 loc) • 1.37 kB
Markdown
# await-reduce [](https://www.npmjs.com/package/await-reduce) [](https://github.com/omrilotan/mono/tree/master/packages/await-reduce)
Resolve and reduce an array of promises
```js
const reduce = require('await-reduce');
```
The behaviour matches Array.prototype.reduce.
```js
const results = await reduce(
[
fetch('one').then(res => res.json()),
fetch('two').then(res => res.json()),
fetch('ten').then(res => res.json()),
],
(accumulator, item) => [...accumulator, item],
[]
)
```
The callback matches Array.prototype.reduce's 4 argument signature, except the 4th argument (`array`) are the results of the Promises, and the callback itself can be asynchronous as well.
```js
const results = await reduce(
[
fetch('one'),
fetch('two'),
fetch('ten'),
],
async (accumulator, response, index, array) => {
if (!response.ok) {
return accumulator
}
const data = await response.json()
return Object.assign(accumulator, data)
},
{}
)
```
## Transpiled version
Environments which exclude node_modules from the transpiling pipeline should include the "browser" entry instead of "main". This exposes an ES5 commonjs module.
Also available for explicit import:
```js
const reduce = require('await-reduce/dist');
```