20. @nicoespeon
- Andre Staltz, 2 minute introduction to Rx
« Think of it as an
asynchronous
immutable array »
20
21. @nicoespeon
Utilisez les Observables avec ReactiveX
• Projet porté par Microsoft, en open-source depuis 2012
• Implémente les Observables dans de nombreux langages
(Java, Python, JS, .NET, Go, Ruby, Elixir, Swift…)
• Fournit une API pour manipuler des flux observables
21
38. @nicoespeon
Qu’avons-nous gagné ?
✓ Code déclaratif, facile à faire évoluer
✓ Logique applicative sans effets de bords, facile à tester
✓ Observables composables, facile à ré-utiliser
38
39. @nicoespeon
L’usage des Observables se popularise dans le web
• Embarqué par défaut dans Angular
• Il y a des adaptations pour chaque librairie :
redux−observable, vue-rx…
• Cycle.js est un framework fonctionnel et réactif, basé sur
l’usage des Observables
39
42. @nicoespeon
Pour aller plus loin
The introduction to Reactive Programming you've been missing
RxJS Functions with Examples
Using Observables in real life
Testing reactive code
📚 Reactive Programming - What is RxJS? (lessons)
🎦 The whole future declared in a var (video)
📑 Dynamics of Change - Why Reactivity matters (PDF)
🥋 Reactive Extensions (Rx.js) Workshop (kata)
42
43. @nicoespeon
Des diagrammes Marbles dans le code
43
const polledTrips$ = isRequestComplete$
!// !!---(true)----(false)----------(false)------->
.filter((isComplete) !=> !isComplete)
!// ------------(false)----------(false)-------->
.delay(DELAY_BEFORE_POLLING_IN_MS )
!// ----------------(false)----------(false)---->
.flatMapLatest(pollTrips)
!// ----------------(A)--------------(A)-------->
44. @nicoespeon
Analysons les strates du code
44
Gestion du temps (debounce, délai)
Logique applicative
Effets de bord (rendu, gestion des erreurs)
Évènements du DOM (click, keypress)