Devoxx france 2014 - Promesses et Yield

16
@flornt #PromessesYield Promesses et Yield Les Future<?> de JavaScript Florent Le Gall @flornt

Transcript of Devoxx france 2014 - Promesses et Yield

Page 1: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Promesses et Yield Les Future<?> de JavaScript!Florent Le Gall !@flornt !!

Page 2: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

L’asynchronisme

get /book/bookId

Afficher la couverture

Afficher le contenu

get /url/to/content

Avec la gestion des erreurs !

Et des resources !

Page 3: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Avec des callbacks

Page 4: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Avec des promesses

Page 5: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Avec les générateurs

Page 6: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Function *

!

•C’est un générateur (ECMAScript 6) !

•Il permet de renvoyer un résultat partiel à la fonction appelante…

•… et d’être rappelé par une autre valeur…

•… mais c’est toujours asynchrone !

Page 7: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Yield + Promesses

!

!

On cède une promesse et on est rappelé avec le résultat

Page 8: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

On peut aussi faire l’inverse

Convertir un générateur en promesse

Page 9: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Oui, mais …

… on ne peut utiliser yield que depuis un générateur Pour déléguer à un autre générateur

Page 10: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Où l’utiliser ?!

• instable (0.11X) !

• 27 + !

• 30 + (en activant « Experimental JavaScript Features »)

Page 11: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Quelques librairies JavaScript

!

!

•TaskJS: http://taskjs.org !

•Q: https://github.com/kriskowal/q

Page 12: Devoxx france 2014 - Promesses et Yield

@flornt#YourSessionHashtag

Que choisir ?

On expose un service asynchrone

On utilise un service asynchrone

Il vaut mieux renvoyer une promesse

On peut utiliser un générateur pour consommer

la promesse

Page 13: Devoxx france 2014 - Promesses et Yield

@YourTwitterHandle#DVXFR14{session hashtag} @flornt#PromessesYield

Pour

résu

mer

Page 14: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

Yield c’est facile !

•Permet de simplifier la gestion des traitements asynchrones !

•Conserve l’asynchronisme de JavaScript !

•Si vous faites une API JS : renvoyez des promesses ! !

•Si vous consommez une API JS : utilisez yield !

Page 15: Devoxx france 2014 - Promesses et Yield

@YourTwitterHandle#DVXFR14{session hashtag} @flornt#PromessesYield

Q & A

Page 16: Devoxx france 2014 - Promesses et Yield

@flornt#PromessesYield

!

Merci !