Package Exports
- promise-all-reject-late
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (promise-all-reject-late) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
promise-all-reject-late
Like Promise.all, but save rejections until all promises are resolved.
This is handy when you want to do a bunch of things in parallel, and rollback on failure, without clobbering or conflicting with those parallel actions that may be in flight. For example, creating a bunch of files, and deleting any if they don't all succeed.
Example:
const lateReject = require('promise-all-reject-late')
const { promisify } = require('util')
const fs = require('fs')
const writeFile = promisify(fs.writeFile)
const createFilesOrRollback = (files) => {
return lateReject(files.map(file => writeFile(file, 'some data')))
.catch(er => {
// try to clean up, then fail with the initial error
// we know that all write attempts are finished at this point
return lateReject(files.map(file => rimraf(file)))
.catch(er => {
console.error('failed to clean up, youre on your own i guess', er)
})
.then(() => {
// fail with the original error
throw er
})
})
}API
lateReject([array, of, promises])- Resolve all the promises, returning a promise that rejects with the first error, or resolves with the array of results, but only after all promises are settled.