| 1234567891011121314151617181920212223242526272829 |
- 'use strict'
- // https://github.com/jprichardson/node-fs-extra/issues/1056
- // Performing parallel operations on each item of an async iterator is
- // surprisingly hard; you need to have handlers in place to avoid getting an
- // UnhandledPromiseRejectionWarning.
- // NOTE: This function does not presently handle return values, only errors
- async function asyncIteratorConcurrentProcess (iterator, fn) {
- const promises = []
- for await (const item of iterator) {
- promises.push(
- fn(item).then(
- () => null,
- (err) => err ?? new Error('unknown error')
- )
- )
- }
- await Promise.all(
- promises.map((promise) =>
- promise.then((possibleErr) => {
- if (possibleErr !== null) throw possibleErr
- })
- )
- )
- }
- module.exports = {
- asyncIteratorConcurrentProcess
- }
|