Je ne comprends pas. async, si j'en crois NDM, s'applique uniquement aux fonctions.
Oui, je me suis relu et il manquait clairement quelque chose ; mon commentaire était à sous-entendre dans le contexte d'une fonction asynchrone qui comporte les promesses ou les await.
Dans le cas des promesses, notre fonction F va déclarer autant de fonctions (le plus souvent courtes et anonymes) qu'il y a d'étages dans la promise chain.
Dans le cas des async/await, le code habituellement déclaré dans les fonctions courtes et anonymes se retrouvent juste comme autant d'instructions dans la fonction F.
Ca ne change rien au fait que ta remarque est judicieuse (je suis fan d'Elixir et Elm donc je comprends ce que tu veux dire), même si je pense que dans le cadre d'une utilisation raisonnable d'async/await en JavaScript, ça ne pose pas de problèmes particuliers.
Voici le genre de code sous forme de promesses traditionnelles qu'on retrouvait fréquemment dans notre codebase au boulot :
functionf(){returnasyncFunc1().then(res1=>{(...)// code synchrone qui déclare une variable res2, la calcul, et qui a besoin de transmettre res1 à l'étage suivantreturn[res1,res2];}).then(([res1,res2]=>asyncFunc2(res1,res2)).then(res3=>{(...)// code synchrone qui fait un calcul depuis res3 et le retourne}).catch(err=>{console.error(err);});}
Voici ce que le même code devient avec async/await :
asyncfunctionf(){try{constres1=awaitasyncFunc1();(...)// code synchrone qui déclare une variable res2, la calculeconstres3=awaitasyncFunc2(res1,res2);(...)// code synchrone qui fait un calcul depuis res3 et le retournecatch(err){console.error(err);}}
Franchement, je préfère la deuxième version.
Maintenant, avec une fonction d'une complexité cyclomatique de ouf, des await noyés dans la masse, je dis pas...
[^] # Re: Tu tiens pas tes promesses
Posté par Guillaume Denry (site web personnel) . En réponse au journal recherche-totoz en JavaScript. Évalué à 4.
Oui, je me suis relu et il manquait clairement quelque chose ; mon commentaire était à sous-entendre dans le contexte d'une fonction asynchrone qui comporte les promesses ou les await.
Dans le cas des promesses, notre fonction F va déclarer autant de fonctions (le plus souvent courtes et anonymes) qu'il y a d'étages dans la promise chain.
Dans le cas des async/await, le code habituellement déclaré dans les fonctions courtes et anonymes se retrouvent juste comme autant d'instructions dans la fonction F.
Ca ne change rien au fait que ta remarque est judicieuse (je suis fan d'Elixir et Elm donc je comprends ce que tu veux dire), même si je pense que dans le cadre d'une utilisation raisonnable d'async/await en JavaScript, ça ne pose pas de problèmes particuliers.
Voici le genre de code sous forme de promesses traditionnelles qu'on retrouvait fréquemment dans notre codebase au boulot :
Voici ce que le même code devient avec async/await :
Franchement, je préfère la deuxième version.
Maintenant, avec une fonction d'une complexité cyclomatique de ouf, des await noyés dans la masse, je dis pas...