You avoid only few very limited cases of parallelism.

When you use Promise.all you are awaiting either on *all promises to
resolve or first rejection*, but in case of rejecton, other promises don't
get cancelled/reverted. That's pattern not present in synchronous code.
Awaiting on values is more similar to synchronous code.
Awaiting for all promises can be necessary, but in most use cases it's
better to start processing already available values as fast as possible.
Though I appreciate map/filter methods from Array.prototype.

And on topic - await* is probably syntax to go (though I would recommend
asynchronous iterators proposal).
And on the margin - it would be nice to have functional
map/filter/each/reduce on native promises (Bluebird have these and they are
awesome).

On Wed, Oct 26, 2016 at 12:19 PM, Andrea Giammarchi <
[email protected]> wrote:

> avoiding parallelism? can you please elaborate a bit more what's the code
> smell, exactly?
>
> On Wed, Oct 26, 2016 at 10:49 AM, Michał Wadas <[email protected]>
> wrote:
>
>> Actually using Promise.all with async/await is usually code smell - you
>> probably should await on values.
>>
>>
>>
>> On Wed, Oct 26, 2016 at 10:40 AM, Damian Senn <[email protected]>
>> wrote:
>>
>>> I don't like the `await* []` syntax, it doesn't really tell me what it's
>>> doing.
>>> I could imagine something like `await.all []` or `await.race []`
>>> desugaring to `await Promise.all([])` and `await Promise.race([])`, this
>>> could also be expanded to whatever new functionality might be added in the
>>> future (assuming await.something could work).
>>>
>>> On Wed, Oct 26, 2016 at 10:37 AM kdex <[email protected]> wrote:
>>>
>>>> Personally, I wouldn't mind such an operator, as I feel that the use of
>>>> `Promise.all` clearly
>>>> outweighs all other `Promise` combinators, but this could be an
>>>> opinionated view.
>>>>
>>>> IIRC, that even was up for standards discussion at some point (being
>>>> called `await*` instead
>>>> of `await`). I'm not sure what ever happened to that.
>>>>
>>>> On Wednesday, October 26, 2016 1:27:28 AM CEST Olivier Lalonde wrote:
>>>> > Right it makes sense, should have thought about that! An `awaitAll`
>>>> (or
>>>> > other syntax) could be nice but it seems the general opinion is
>>>> against.
>>>> >
>>>> > On Wed, Oct 26, 2016 at 1:22 AM, kdex <[email protected]> wrote:
>>>> >
>>>> > > It's especially beneficial for designing APIs where you don't care
>>>> about if
>>>> > > users pass you a `Promise` or the actual data to work with.
>>>> > >
>>>> > > Imagine a scenario where you would like to remove a set of files:
>>>> > >
>>>> > > ```js
>>>> > > async function remove(filesArray) {
>>>> > >         const files = await filesArray;
>>>> > >         /* … work with `files` here …*/
>>>> > > }
>>>> > > ```
>>>> > >
>>>> > > In the scenario above, you could pass an array of files, or a
>>>> `Promise`
>>>> > > that resolves
>>>> > > to said array; the function accepts both.
>>>> > >
>>>> > > On Wednesday, October 26, 2016 1:03:37 AM CEST Olivier Lalonde
>>>> wrote:
>>>> > > > I didn't realize `await` could be used on non-`Promise`s, never
>>>> mind. I
>>>> > > > wonder why that is, seems strange. Maybe so that async functions
>>>> could be
>>>> > > > more easily swapped out with sync ones in code? I do think
>>>> `Promise.all`
>>>> > > > should deserve special treatment because it is so common, unlike
>>>> > > > Promise.race (who uses that seriously?) and future combinators.
>>>> But I'm
>>>> > > not
>>>> > > > sure it is worth introducing new syntax for.
>>>> > > >
>>>> > > > On Wed, Oct 26, 2016 at 12:33 AM, Jordan Harband <
>>>> [email protected]>
>>>> > > wrote:
>>>> > > >
>>>> > > > > Your suggestion would preclude having a promise for an array
>>>> (exactly
>>>> > > what
>>>> > > > > `Promise.all` returns).
>>>> > > > >
>>>> > > > > If you want `await` syntax for `Promise.all`, you'd need
>>>> different
>>>> > > syntax
>>>> > > > > for it - and then, what about `Promise.race`? What about other
>>>> future
>>>> > > > > combinators?
>>>> > > > >
>>>> > > > > On Wed, Oct 26, 2016 at 12:25 AM, Olivier Lalonde <
>>>> [email protected]>
>>>> > > > > wrote:
>>>> > > > >
>>>> > > > >> I don't think so, what do you mean?
>>>> > > > >>
>>>> > > > >> On Wed, Oct 26, 2016 at 12:22 AM, Raul-Sebastian Mihăilă <
>>>> > > > >> [email protected]> wrote:
>>>> > > > >>
>>>> > > > >>> Then Promise.resolve([p1, p2]) should be like
>>>> Promise.all([p1, p2]) ?
>>>> > > > >>>
>>>> > > > >>> _______________________________________________
>>>> > > > >>> es-discuss mailing list
>>>> > > > >>> [email protected]
>>>> > > > >>> https://mail.mozilla.org/listinfo/es-discuss
>>>> > > > >>>
>>>> > > > >>>
>>>> > > > >>
>>>> > > > >>
>>>> > > > >> --
>>>> > > > >> - Oli
>>>> > > > >>
>>>> > > > >> Oli Lalonde
>>>> > > > >> http://www.syskall.com <-- connect with me!
>>>> > > > >>
>>>> > > > >> _______________________________________________
>>>> > > > >> 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
>>>>
>>>
>>> _______________________________________________
>>> 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

Reply via email to