The term "flatten" or "flatmap" has also been used to refer to "flattening" a nested array; and/or "flattening" (output) of a potentially (arbitrarily) nested data structure (synchronous and asynchronous input/output).
"easier to read" is subjective; depends on the expectations of the reader. try..catch blocks could be considered explicitly "easier to read" by the names used: "try"; "catch". The requirement appears to be a "reflect" pattern? E.g., see this answer https://stackoverflow.com/a/31424853 at Wait until all ES6 promises complete, even rejected promises const reflect = p => p.then(v => ({v, status: "fulfilled" }), e => ({e, status: "rejected" })); reflect(promise).then((v => { console.log(v.status);}); Is the expected result to write less code and handle exceptions implicitly? On Tue, Apr 23, 2019 at 8:25 PM Aaron Silvas <aaronsil...@gmail.com> wrote: > https://github.com/asilvas/proposal-promise-flatten > > Looking for interest, and TC39 champion. > > The basic idea is to provide a simpler, more consistent interface, and > easier to read code over using try/catches for async code paths. Regardless > of which errors are handled or ignored, it's treated as nothing more than > another input in the result, not all that dissimilar to callbacks. > > async function test(promise1, promise2, promise3) { > const [, val1] = await promise1.flatten(); // ignore exceptions > const [err, [val2, val3] = []] = await Promise.all([promise2, > promise3]).flatten(); > > if (err) throw err; // throw to caller > > return val1 + val2 + val3; > } > > > Original topic that spurred interest in this pattern: > https://twitter.com/DavidWells/status/1119729914876284928 > > Spec discussions: > https://twitter.com/Aaron_Silvas/status/1120721934730137601 > > > Thanks, > > Aaron > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss