@rikishi/watermelondb
Version:
Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast
21 lines (17 loc) • 540 B
JavaScript
// @flow
type UnpackPromise = <T>(promise: Promise<T>) => T
export default function allPromisesObj<T, Key, Spec: { [Key]: Promise<T> }>(
promisesObj: Spec,
): 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 = {}
for (let i = 0; i < len; i++) {
resultObj[keys[i]] = result[i]
}
resolve(resultObj)
}, reject)
})
}