@nozbe/watermelondb
Version:
Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast
23 lines (19 loc) • 597 B
JavaScript
// @flow
type UnpackPromise = <T>(promise: Promise<T>) => T
export default function allPromisesObj<T, Key, Spec: { [Key]: Promise<T> }>(
promisesObj: Spec,
// $FlowFixMe
): Promise<$ObjMap<Spec, UnpackPromise>> {
return new Promise((resolve, reject) => {
const keys = Object.keys(promisesObj)
const len = keys.length
Promise.all(Object.values(promisesObj)).then((result) => {
const resultObj: { [string]: mixed } = {}
for (let i = 0; i < len; i++) {
resultObj[keys[i]] = result[i]
}
// $FlowFixMe
resolve(resultObj)
}, reject)
})
}