Remix.run Logo
miki123211 11 hours ago

I recently had to write a Promise.all, but using an object instead of an array.

That was... non-trivial.

hdjrudni 10 hours ago | parent | next [-]

If it's what I'm thinking, that one isn't too bad. I wrote it awhile back:

    export async function promiseAll<T extends Record<string, Promise<any>>>(promises: T): Promise<{ [K in keyof T]: Awaited<T[K]> }> {
        const keys = Object.keys(promises) as Array<keyof T>;
        const result = await Promise.all(keys.map(key => promises[key]));
        return Object.fromEntries(result.map((value, i) => [keys[i], value])) as { [K in keyof T]: Awaited<T[K]> };
atsjie 3 hours ago | parent [-]

I'd call that bad pretty bad.

Without internet or AI I wouldn't attempt writing anything like that.

ruined 9 hours ago | parent | prev [-]

rejoice https://github.com/tc39/proposal-await-dictionary