12345678910111213141516171819 |
- /**
- * This function transforms a JS object `ObjMap<Promise<T>>` into
- * a `Promise<ObjMap<T>>`
- *
- * This is akin to bluebird's `Promise.props`, but implemented only using
- * `Promise.all` so it will work with any implementation of ES6 promises.
- */
- export default function promiseForObject(object) {
- var keys = Object.keys(object);
- var valuesAndPromises = keys.map(function (name) {
- return object[name];
- });
- return Promise.all(valuesAndPromises).then(function (values) {
- return values.reduce(function (resolvedObject, value, i) {
- resolvedObject[keys[i]] = value;
- return resolvedObject;
- }, Object.create(null));
- });
- }
|