UNPKG

await-reduce

Version:

Resolve and reduce an array of promises

49 lines (41 loc) 1.37 kB
# await-reduce [![](https://img.shields.io/npm/v/await-reduce.svg)](https://www.npmjs.com/package/await-reduce) [![](https://img.shields.io/badge/source--000000.svg?logo=github&style=social)](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'); ```