The RSVP library uses Promise.hash, which seems sensible enough that I'm surprised no-one has mentioned or suggested it here. -------------------------- Dammit babies, you've got to be kind.
On Mon, 14 Oct 2019 at 09:17, Michał Wadas <[email protected]> wrote: > Established name is Promise.properties > > On Mon, 14 Oct 2019, 09:29 Cyril Auburtin, <[email protected]> > wrote: > >> maybe a naming like: `Promise.allObject` >> >> ```js >> Promise.allObject = obj => { >> if (obj && !obj[Symbol.iterator]) { >> return Promise.all( >> Object.entries(obj).map(async ([k, v]) => [k, await v]) >> ) >> .then(Object.fromEntries); >> } >> return Promise.all(obj); >> } >> >> var delay = t => new Promise(r => setTimeout(r, t)); >> console.time(1); console.log(await Promise.allObject({foo: >> delay(110).then(()=>1), bar: delay(120).then(()=>2)})); console.timeEnd(1) >> ``` >> >> On Sun, Oct 13, 2019 at 8:55 PM Isiah Meadows <[email protected]> >> wrote: >> >>> Maybe Promise.join(object)? Also, if a map is passed (or any iterable), >>> it should be joined into a map. >>> >>> At the most basic level: >>> >>> ```js >>> Promise.join = (o) => { >>> let isMap = o[Symbol.iterator] != null >>> let ps = ( >>> isMap ? Array.from : Object.entries >>> )(o) >>> let ks = ps.map(p => p[0]) >>> return Promise.all(ps.map(p => p[1])) >>> .then(vs => { >>> let ps = vs.map((v, i) => [ks[i], v]) >>> return isMap >>> ? new Map(ps) >>> : Object.fromEntries(ps) >>> }) >>> } >>> ``` >>> >>> On Sun, Oct 13, 2019 at 13:40 Cyril Auburtin <[email protected]> >>> wrote: >>> >>>> OP probably means he would like Promise.all to return an object as >>>> well, if an object if given >>>> >>>> It's possible to hack an object to be iterable, but Promise.all >>>> already return an array unfortunately >>>> >>>> On Sun, Oct 13, 2019 at 7:16 PM Boris Zbarsky <[email protected]> wrote: >>>> >>>>> On 10/12/19 12:52 AM, Jacob Bloom wrote: >>>>> > const responses = await Promise.all(requests); >>>>> >>>>> As opposed to: >>>>> >>>>> const responses = await Primise.all(requests.values()); >>>>> >>>>> which works right now? >>>>> >>>>> -Boris >>>>> _______________________________________________ >>>>> es-discuss mailing list >>>>> [email protected] >>>>> https://mail.mozilla.org/listinfo/es-discuss >>>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> [email protected] >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>> -- >>> ----- >>> >>> Isiah Meadows >>> [email protected] >>> www.isiahmeadows.com >>> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

