SlideShare une entreprise Scribd logo
Les Promises en
JS
Benoit Zohar
1
Javascript et
ECMAScript
1- Javascript et ECMAScript
• Javascript est un language de scripting
• Créé en 1995 par Brendan Eich pour Netscape
1- Javascript et ECMAScript
• Netscape dépose une standardisation:
ECMAScript
• Javascript évolue rapidement.
• Les moteurs Javascript aussi.
1- Javascript et ECMAScript
• Javascript est utilisé dans le navigateur
• Mais aussi :
• Serveurs web
• Applications mobiles (Semi-Natives / HTML5)
• Macros (Open Office)
1- Javascript et ECMAScript
• ECMAScript sert de standard pour
• JS
• ActionScript
• C++
1- Javascript et ECMAScript
• Le Futur: ECMAScript 6
• ECMAScript 6 apporte beaucoup d'améliorations:
• les Classes (!)
• la Déstructuration
• les Générateurs
• les Promises
2
Threads et
callbacks
2- Threads et callbacks
• Javascript est single-threaded.
• Toute action est bloquante.
• Les traitements longs sont détachés pour libérer
le thread principal.
2- Threads et callbacks
• Un Callback peut être comparé à un Event unique.
• Fonction en paramètre d'un appel méthode
• Exécutée à la fin du traitement
2- Threads et callbacks
2- Threads et callbacks
• Dans la vraie vie:
Les Promises en Javascript
3
Promises
3- Promises
• Issues du DOM:
• Objectif: Simplifier la démarche asynchrone
• "Promesse de réponse"
• 2 types de réponses:
• Succès (valeur)
• Erreur (message)
Futures
3- Promises
• Déjà implémentés:
• AngularJS: $q (Q)
• jQuery (~)
• RSVP
• when
• ...
3- Promises
• Quatre états:
• accomplie (fulfilled)
• rejetée (rejected)
• en attente (pending)
• établie (settled)
3- Promises Utilisation d'un objet Promise
• initialisation: new Promise(function)
• then() <- Action à lier au retour d'une promise
• catch() <- Capturer les erreurs
• resolve() <- Tout à bien fonctionné
• reject() <- Une erreur est survenue
3- Promises Utilisation d'un objet Promise
3- Promises Utilisation d'un objet Promise
3- Promises Utilisation d'un objet Promise
3- Promises
• then() et catch() retournent une promise
• reject() et resolve() aussi
Chaînage
3- Promises
• Dans la vraie vie:
4
Méthodes &
Patterns
4- Méthodes & Patterns
• Une promise est un pattern en elle-même.
• En plus du chaînage, elle a 2 méthodes:
.all([ ... ])
.race([ ... ])
4- Méthodes & Patterns
• Prend un tableau de promises en paramètre
• Exécute "then" lorsque tous les résultats sont arrivés
Promise.All([ ... ])
4- Méthodes & Patterns
• Prend un tableau de promises en paramètre
• Exécute "then" lorsque le premier résultat est arrivé
Promise.race([ ... ])
then()
5
Exemples
5- Exemples
• Exemple 1: Chaînage
• Exemple 2: Requête HTTP
• Exemple 3: Race
Merci
@benoitzohar

Contenu connexe

PPTX
Javascript proprement
PDF
JavaScript pour le développeur Java
PDF
Cours JavaScript
PDF
Du JavaScript dans mon projet
PDF
Javascript pour le développeur Java
KEY
Guide javascript
ODP
Réu technodejs
PDF
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Javascript proprement
JavaScript pour le développeur Java
Cours JavaScript
Du JavaScript dans mon projet
Javascript pour le développeur Java
Guide javascript
Réu technodejs
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013

Tendances (20)

PDF
Node.js et les nouvelles technologies javascript
PDF
JavaScript pour le développeur Java
KEY
Pourquoi et comment j'ai appris JavaScript
PDF
Cappuccino - ou comment créer une application web en 5 minutes
PPTX
Initiation à Express js
PDF
NodeJs, une introduction
PPTX
Introduction à Node.js
PDF
Javascript pour les Développeurs WEB
PPTX
Présentation Javascript à l'ESI (Alger)
PPTX
Présentation JavaScript
PDF
Programmation concurrente en Java
PPTX
Rouabhi algiers meetup
PDF
Enib cours c.a.i. web - séance #6 : introduction à node js
PPTX
Javascript & tools
PPTX
Présentation de Node.js
PDF
NodeJs in real life
PPTX
The Future of Javascript
ODP
Utilisation de node.js avec mongoDB
 
PPTX
EventMachine
PDF
Notions de base de JavaScript
Node.js et les nouvelles technologies javascript
JavaScript pour le développeur Java
Pourquoi et comment j'ai appris JavaScript
Cappuccino - ou comment créer une application web en 5 minutes
Initiation à Express js
NodeJs, une introduction
Introduction à Node.js
Javascript pour les Développeurs WEB
Présentation Javascript à l'ESI (Alger)
Présentation JavaScript
Programmation concurrente en Java
Rouabhi algiers meetup
Enib cours c.a.i. web - séance #6 : introduction à node js
Javascript & tools
Présentation de Node.js
NodeJs in real life
The Future of Javascript
Utilisation de node.js avec mongoDB
 
EventMachine
Notions de base de JavaScript
Publicité

En vedette (20)

PPTX
Angular2 / Typescript symposium Versusmind
PDF
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
PDF
Symposium TFS - DevOps avec Microsoft
PDF
Symposium flexbox
PDF
Symposium uxdesign
PDF
Introduction à Angular 2
PDF
Abogado, asesor, consultor litigante administrador de empresas Inocencio mele...
PDF
Asynchronismes en Javascript
PPTX
AngularJS - Présentation (french)
ODP
Why Use MVC?
PPT
Why MVC?
PPT
MVC ppt presentation
PDF
Model View Controller (MVC)
PPT
Mvc architecture
PPT
Formation Classes prépas Lycée Sainte-Geneviève, Versailles
PDF
Ideas para emprendimientos sociales y abiertos
PPT
Diversidad Cultural Abasto
PDF
Formation : que sont devenus les bénéficiaires en 2013 ?
PPTX
Videofor all presentation Spanish
PPTX
Regimes de Responsabilitie: Contrats "Style Americain" 19 Septembre 2013
Angular2 / Typescript symposium Versusmind
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
Symposium TFS - DevOps avec Microsoft
Symposium flexbox
Symposium uxdesign
Introduction à Angular 2
Abogado, asesor, consultor litigante administrador de empresas Inocencio mele...
Asynchronismes en Javascript
AngularJS - Présentation (french)
Why Use MVC?
Why MVC?
MVC ppt presentation
Model View Controller (MVC)
Mvc architecture
Formation Classes prépas Lycée Sainte-Geneviève, Versailles
Ideas para emprendimientos sociales y abiertos
Diversidad Cultural Abasto
Formation : que sont devenus les bénéficiaires en 2013 ?
Videofor all presentation Spanish
Regimes de Responsabilitie: Contrats "Style Americain" 19 Septembre 2013
Publicité

Similaire à Les Promises en Javascript (20)

PPTX
Promises Javascript
PPTX
The future of JavaScript
PDF
Asynchronismes en JavaScript - Devoxx 2015
PPTX
Future of java script web version
PDF
Slide de Promises par Pierre de la Morinerie
PDF
Devoxx france 2014 - Promesses et Yield
PPTX
Javascript un langage supérieur
PDF
web-avance-jssvghjjjjjjkkkkhjjjjjkrtyujj
PDF
Formation JavaScript full-stack (JS, jQuery, Node.js...)
PDF
Javascript
PPTX
Aperçu de RequireJS
PPTX
JavaScript: bonnes pratiques, astuces, et cauchemars
PDF
Node.js, le pavé dans la mare
PDF
AMD/CommonJs/EcmaScript
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
PPTX
Server Side Javascript in the cloud
PPT
Introduction à JavaScript
PPTX
EcmaScript
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
PDF
Js, quoi de neuf ? - strasbourg js - septembre 2016
Promises Javascript
The future of JavaScript
Asynchronismes en JavaScript - Devoxx 2015
Future of java script web version
Slide de Promises par Pierre de la Morinerie
Devoxx france 2014 - Promesses et Yield
Javascript un langage supérieur
web-avance-jssvghjjjjjjkkkkhjjjjjkrtyujj
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Javascript
Aperçu de RequireJS
JavaScript: bonnes pratiques, astuces, et cauchemars
Node.js, le pavé dans la mare
AMD/CommonJs/EcmaScript
JavaScript aussi sur le serveur et jusque dans le cloud?
Server Side Javascript in the cloud
Introduction à JavaScript
EcmaScript
JavaScript aussi sur le serveur et jusque dans le cloud?
Js, quoi de neuf ? - strasbourg js - septembre 2016

Les Promises en Javascript

  • 3. 1- Javascript et ECMAScript • Javascript est un language de scripting • Créé en 1995 par Brendan Eich pour Netscape
  • 4. 1- Javascript et ECMAScript • Netscape dépose une standardisation: ECMAScript • Javascript évolue rapidement. • Les moteurs Javascript aussi.
  • 5. 1- Javascript et ECMAScript • Javascript est utilisé dans le navigateur • Mais aussi : • Serveurs web • Applications mobiles (Semi-Natives / HTML5) • Macros (Open Office)
  • 6. 1- Javascript et ECMAScript • ECMAScript sert de standard pour • JS • ActionScript • C++
  • 7. 1- Javascript et ECMAScript • Le Futur: ECMAScript 6 • ECMAScript 6 apporte beaucoup d'améliorations: • les Classes (!) • la Déstructuration • les Générateurs • les Promises
  • 9. 2- Threads et callbacks • Javascript est single-threaded. • Toute action est bloquante. • Les traitements longs sont détachés pour libérer le thread principal.
  • 10. 2- Threads et callbacks • Un Callback peut être comparé à un Event unique. • Fonction en paramètre d'un appel méthode • Exécutée à la fin du traitement
  • 11. 2- Threads et callbacks
  • 12. 2- Threads et callbacks • Dans la vraie vie:
  • 15. 3- Promises • Issues du DOM: • Objectif: Simplifier la démarche asynchrone • "Promesse de réponse" • 2 types de réponses: • Succès (valeur) • Erreur (message) Futures
  • 16. 3- Promises • Déjà implémentés: • AngularJS: $q (Q) • jQuery (~) • RSVP • when • ...
  • 17. 3- Promises • Quatre états: • accomplie (fulfilled) • rejetée (rejected) • en attente (pending) • établie (settled)
  • 18. 3- Promises Utilisation d'un objet Promise • initialisation: new Promise(function) • then() <- Action à lier au retour d'une promise • catch() <- Capturer les erreurs • resolve() <- Tout à bien fonctionné • reject() <- Une erreur est survenue
  • 19. 3- Promises Utilisation d'un objet Promise
  • 20. 3- Promises Utilisation d'un objet Promise
  • 21. 3- Promises Utilisation d'un objet Promise
  • 22. 3- Promises • then() et catch() retournent une promise • reject() et resolve() aussi Chaînage
  • 23. 3- Promises • Dans la vraie vie:
  • 25. 4- Méthodes & Patterns • Une promise est un pattern en elle-même. • En plus du chaînage, elle a 2 méthodes: .all([ ... ]) .race([ ... ])
  • 26. 4- Méthodes & Patterns • Prend un tableau de promises en paramètre • Exécute "then" lorsque tous les résultats sont arrivés Promise.All([ ... ])
  • 27. 4- Méthodes & Patterns • Prend un tableau de promises en paramètre • Exécute "then" lorsque le premier résultat est arrivé Promise.race([ ... ]) then()
  • 29. 5- Exemples • Exemple 1: Chaînage • Exemple 2: Requête HTTP • Exemple 3: Race

Notes de l'éditeur

  • #4: Brendan Eich: membre du conseil d’administration de la Mozilla Foundation SUN + Netscape : sortie de JS en décembre 1995 Mocha -> LiveScript -> Javascript
  • #5: Actuel ECMAScript: principalement la v3. la v4 a été abandonnées au profit de la 5 la 5 vise a améliorer la rétrocompatibilité avec les versions précédentes Javascript Engines: V8 = google / nodeJS Chakra = IE SpiderMonkey = Firefox JavaScriptCore = Webkit (Safari..)
  • #6: NodeJS basé sur CommonJS CommonJS : projet de développement d'une API pour développer un écosystème en JS.
  • #7: ActionScript -> Flash C++ -> Norme 2011 aussi : Adobe Acrobat, .NET (JSCript)
  • #8: Destructuring object ~= list() en PHP générateur = generator (yield ...) Aussi: Valeurs par défaut, allègement de syntax (fonctions), portée des variables (let), collections, proxies
  • #10: Par convention et à l'usage, les traitements longs sont détachés pour débloquer le thread principal.
  • #11: Un callback peut être comparé à un évènement unique ET spécifique. C'est à dire qu'il est attaché à une seule méthode (en théorie) et n'est appelé qu'une fois (en théorie aussi) Concretement, le JS est devenu un nid à Callback (surtout avec NodeJS).
  • #12: Voici un exemple très simple de callback.
  • #13: Flèches vertes = succès Flèches rouges = erreur
  • #17: Nous nous intéresserons à l'implémentation officielle, celle qui vient avec ECMAScript 6: l'objet "Promise"
  • #18: accomplie: L’action associée à la promesse a réussi rejetée: L’action associée à la promesse a échoué en attente: N’est encore ni accomplie ni rejetée établie: Est accomplie ou rejetée
  • #20: Expliquer pour "resolve" et "rejecte" en parametre
  • #21: Expliquer pour "resolve" et "rejecte" en parametre -> Mais il y a aussi une autre manière de capturer les erreurs ... ->
  • #23: "on peut donc écrire"
  • #24: Reprenons l'exemple de tout à l'heure
  • #27: renvoie un tableau avec tous les résultats
  • #28: Les autres résultats sont abandonnés...