Pourquoi attendez-vous * retiré de la proposition asynchrone / attendue?

Le seul endroit où il semble être documenté est ce problème et les spécifications réelles . Toutefois, le raisonnement pour le retrait n'est pas publié partout où je peux trouver.

La nouvelle façon recommandée semble await Promise.all() , mais je suis curieux de savoir pourquoi await* été supprimé.

Eh bien, la dernière révision du fichier légal avant sa suppression a déjà mentionné tout ce paragraphe:

Attendez * et le parallélisme

Dans les générateurs, le yield et le yield* peuvent être utilisés. Dans les fonctions asynchrones, l' await est seulement autorisée. L'analogie directe du yield* n'a pas de sens dans les fonctions asynchrones, car il faudrait attendre à plusieurs reprises l'opération intérieure, mais ne sait pas quelle valeur passer dans chaque attente (pour le yield* , il passe simplement non défini parce que les itérateurs n'acceptent pas Valeurs entrantes).

Il a été suggéré que la syntaxe pourrait être réutilisée pour différentes sémantiques – sucre pour Promise.all . Cela accepterait une valeur qui serait un ensemble de promesses, et (de manière asynchrone) renverrait un ensemble de valeurs renvoyées par les promesses. On s'attend à ce que ce soit l'une des opérations les plus courantes liées aux promesses qui n'auraient pas encore de sucre syntaxique après que le noyau de cette proposition soit disponible.

Il ne s'agit donc pas d'un analogue direct pour yield* comme on pouvait s'y attendre, il n'a pas vraiment de sens , ce n'était qu'une suggestion, mais jamais vraiment inclus dans la proposition de spécifications.

Le consensus était qu'il n'y avait aucune raison d'introduire plus de sucre syntaxique que nécessaire , en appelant Promise.all n'est pas une grande différence.

Vous pouvez consulter les discussions au numéro 8 ou au numéro 29 .

Enfin, des propositions d'armes plus puissantes (parallélisme) sont encore en cours. Vérifiez l' itération asynchrone, les générateurs asynchrones et les observables . Il pourrait y en avoir un qui pourrait utiliser un mot-clé await* mieux que pour des tableaux simples de promesses.

La proposition async / await est minimale et ne présente que les primitives nécessaires. Il n'y a aucun problème sur les extensions possibles, qui devraient être discutées séparément.