Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Programação Reativa com RxJS
Search
Jonata Weber
May 27, 2017
Technology
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Programação Reativa com RxJS
Jonata Weber
May 27, 2017
More Decks by Jonata Weber
See All by Jonata Weber
PHPStan - Analisador Estático
jonataa
0
130
PHP Moderno
jonataa
0
120
TemDendê: Desenvolvimento PHP a Moda Baiana
jonataa
0
65
O que esperar de um profissional de TI
jonataa
0
59
A onda agora é função como serviço
jonataa
0
44
Programação Funcional com Acarajé e Dendê
jonataa
0
84
Curso de Programação Funcional com JavaScript
jonataa
0
190
Medindo a Performance de Códigos PHP
jonataa
0
80
5 motivos para você participar de eventos
jonataa
0
160
Other Decks in Technology
See All in Technology
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
180
今から始めるAWS環境の暗号移行 - ポスト量子時代に備える
sato4mi
0
150
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
5
640
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
2.7k
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
1
540
Flutter Webを「SDK」として配る — 50以上のゲームを支える埋め込みアーキテクチャ
masayukisuda
0
170
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
550
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
720
20261031_IoTLT_vol140_kitazaki_v1.pdf
kitazaki
0
150
Lint の層を組み直した話
bengo4com
2
290
新卒エンジニア、 介護士になる
ryu1013
1
670
Agent Loopを組み込んだ アンビエントなAI機能を実現する / Ambient AI fetures with Agent Loop
nekorush14
0
130
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Building the Perfect Custom Keyboard
takai
2
940
Producing Creativity
orderedlist
PRO
348
41k
Statistics for Hackers
jakevdp
799
230k
YesSQL, Process and Tooling at Scale
rocio
174
15k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
Programação Reativa com RxJS Por Jonata Weber
@JonataWeber
None
None
Programação Reativa
Reactive programming is programming with asynchronous data streams.
Async em Web apps • AJAX • User Events (mouse
clicks, mouvemoves, keyups, etc) • Animations • Sockets • Workers
Por que usar RP?
None
callback É a maneira mais primitiva de trabalhar com async
no JavaScript getSomeData((data) => { console.log('data received', data); });
Callback Hell
Promises Provê uma solução simples getData(id) .then(data => { doStuff(data);
return getSomeData(data.parentId); }) .then(data => { doStuff(data); return getSomeData(data.parentId); })
Promises • Garante o Futuro • Imutável • Único valor
• Caching
Promises let promise = new Promise((resolve, reject) => { let
success = doSomethingAsync(); if (success) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } });
Promises let promise = new Promise((resolve, reject) => { let
success = doSomethingAsync(); if (success) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } });
Promises let promise = new Promise((resolve, reject) => { let
success = doSomethingAsync(); if (success) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } });
Promises Pendente Realizada Rejeitado Estabelecido
Promises Pendente Realizada Rejeitado Estabelecido Não pode ser cancelada!!!
GET /search?q=pagode Search com Promises
GET /search?q=pop GET /search?q=pagode Search com Promises
GET /search?q=pagode GET /search?q=pop Search com Promises
Processará algo inútil Search com Promises GET /search?q=pagode GET /search?q=pop
GET /search?q=pagode Cenário ideal
GET /search?q=pop GET /search?q=pagode Cenário ideal
GET /search?q=pop GET /search?q=pagode Cenário ideal Abortar a requisição anterior
RxJS
RxJS is a library for composing asynchronous and event-based programs
by using observable sequences.
ReactiveX is a combination of the best ideas from the
Observer pattern, the Iterator pattern, and functional programming
Java: RxJava JavaScript: RxJS C#: Rx.NET Python: RxPY Ruby: Rx.rb
PHP: RxPHP Go: RxGo Kotlin: RxKotlin C++: RxCpp Lua: RxLua Groovy: RxGroovy JRuby: RxJRuby Swift: RxSwift Elixir: reaxive Dart: RxDart C# (Unity): UniRx
Demo
Hello World Rx.Observable .of(1, 2, 3, 4, 5) .subscribe(n =>
console.log(n)); http://jsbin.com/muxigepeju/edit?js,console
const btn = document.querySelector('button'); Rx.Observable.fromEvent(btn, 'click') .throttleTime(250) .scan(count => count
+ 1, 0) .subscribe(count => console.log(`Clicked ${count} times`)); Contador de Cliques http://jsbin.com/qifumej/edit?js,console,output
None
Transformation Operators • buffer • bufferCount • bufferTime • bufferToggle
• bufferWhen • concatMap • concatMapTo • exhaustMap • expand • groupBy • map • mapTo • mergeMap • mergeMapTo • mergeScan • pairwise • partition • pluck • scan • switchMap • switchMapTo • window • windowCount • windowTime • windowToggle • windowWhen
Demo http://jsbin.com/fuviwin/edit?js,console,output
Observable
Single Multiple Pull Function Iterator Push Promise Observable
Exemplo let observable = Rx.Observable.create((observer) => { observer.next(1); observer.next(2); observer.next(3);
setTimeout(() => { observer.next(4); observer.complete(); }, 1000); });
let observable = Rx.Observable.create((observer) => { observer.next(1); observer.next(2); observer.next(3); setTimeout(()
=> { observer.next(4); observer.complete(); }, 1000); }); console.log('just before subscribe'); observable.subscribe({ next: x => console.log('got value ' + x), error: err => console.error('something wrong occurred: ' + err), complete: () => console.log('done'), }); console.log('just after subscribe');
Subjects
Demo http://jsbin.com/ribosa/edit?js,console
Onde posso aprender mais sobre RxJS?
Referências • http://reactivex.io/rxjs/manual/overview.html#subject • https://www.gitbook.com/book/btroncone/learn-rxjs/ details • https://xgrommx.github.io/rx-book/why_rx.html • https://github.com/ReactiveX/rxjs
• https://www.youtube.com/watch?v=COviCoUtwx4
Obrigado! @JonataWeber