Votre navigateur ne peut afficher cette présentation. Ceci est une version simplifiée.

Pour une meilleure expérience, merci d'utiliser la dernière version de Chrome, Safari ou Firefox.

Les promises en JavaScript

Promis, je ne ferai pas de blague style : "un paradigme qui tient ses promesses". Trop tard.

Moi

Nicolas Froidure, @nfroidure, insertafter.com.

Définition (théorique)

Objet représentant la valeur d'une opération unique.

Cette opération peut être en attente de réalisation, être réalisée avec succès ou simplement échouer.

L'idée est de découpler le traitement du résultat d'une opération du moment de sa réalisation.

Ce découplage est particulièrement adapté à JavaScript qui réalise la plupart des opérations de manière asynchrone.

On peut donc penser en terme d'opérations concurrentes plutôt qu'en terme de callbacks exécutés de manière imprédictible.

Définition (technique)

Un objet Javascript qui possède une méthode then qui :

L'idée est que toute librairie puisse proposer la compatibilité avec les promises sans hériter d'un objet promise de base.

Il faudra cependant se mettre d'accord sur la manière de "désamorcer" une promise (I).

Par exemple

document.addEventListener('click', function() {
console.log('click');
})

Devient

new EventPromise(document, 'click').then(function() {
console.log('click');
})

Quelles applications ?

Callback différé

L'approche classique ne permet pas d'écouter un évènement sans connaître la fonction qui l'exploitera.

var click=new EventPromise(document, 'click');
// Plus tard
click.then(function() { console.log('click'); })

On pourrait imaginer afficher un formulaire de connexion pendant le chargement d'une application, écouter l'évènement submit, mais n'exploiter ce dernier qu'au chargement complet de l'application.

Callbacks multiples

var click=new EventPromise(document, 'click');
// Plus tard
click.then(function() { console.log('click'); })
// Plus tard
click.then(function() { console.log('click2'); })

On peut ainsi utiliser le résultat d'une opération asynchrone qu'importe son état et son utilisation par ailleurs.

Composition

Les promises se transcendent dès lors qu'on se met à les composer.

Jouons un peu à mixer les promises.

Séquences

Ensembles

Exemple de Liar

Liar est un mini jeu expérimental avec lequel j'ai raisonné uniquement en terme de promises.

Il en résulte un arbre de promises sorte de "squelette" de l'application.

Problèmes rencontrés

Aller plus loin

Touches espace et flèches pour naviguer.