Submit Search
Upload
Like a surgeon dissecting a completely functional reactive java-script app for the very first time
•
0 likes
•
248 views
N
Netta Bondy
Follow
Slides from talk given at JS-Kongress and YGLF
Read less
Read more
Technology
Report
Share
Report
Share
1 of 26
Download now
Download to read offline
Recommended
Tail Recursion in data structure
Tail Recursion in data structure
Rumman Ansari
Removal Of Recursion
Removal Of Recursion
Richa Sharma
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
kashif kashif
.NET Core Summer event 2019 in Brno, CZ - Async demystified -- Karel Zikmund
.NET Core Summer event 2019 in Brno, CZ - Async demystified -- Karel Zikmund
Karel Zikmund
Effective java item 80 and 81
Effective java item 80 and 81
Isaac Liao
The low level awesomeness of Go
The low level awesomeness of Go
Jean-Bernard Jansen
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp
Loops (1)
Loops (1)
esmail said
Recommended
Tail Recursion in data structure
Tail Recursion in data structure
Rumman Ansari
Removal Of Recursion
Removal Of Recursion
Richa Sharma
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
kashif kashif
.NET Core Summer event 2019 in Brno, CZ - Async demystified -- Karel Zikmund
.NET Core Summer event 2019 in Brno, CZ - Async demystified -- Karel Zikmund
Karel Zikmund
Effective java item 80 and 81
Effective java item 80 and 81
Isaac Liao
The low level awesomeness of Go
The low level awesomeness of Go
Jean-Bernard Jansen
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp
Loops (1)
Loops (1)
esmail said
VLSI Sequential Circuits II
VLSI Sequential Circuits II
Gouthaman V
Wrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensator
Flowa Oy
C++20 features
C++20 features
LogeekNightUkraine
Using zone.js
Using zone.js
Standa Opichal
Assignment#1
Assignment#1
NA000000
How c program execute in c program
How c program execute in c program
Rumman Ansari
array, function, pointer, pattern matching
array, function, pointer, pattern matching
Shakila Mahjabin
Using Grafana with InfluxDB 2.0 and Flux Lang by Jacob Lisi
Using Grafana with InfluxDB 2.0 and Flux Lang by Jacob Lisi
InfluxData
Andrii Orlov "Generators Flexibility in Modern Code"
Andrii Orlov "Generators Flexibility in Modern Code"
LogeekNightUkraine
Assignement of programming & problem solving(3)a.z
Assignement of programming & problem solving(3)a.z
Syed Umair
Queue oop
Queue oop
Gouda Mando
Roots of a quadratic equation1
Roots of a quadratic equation1
Wilson ak
Command line arguments
Command line arguments
ramyaranjith
Load-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOAD
Dharmalingam Ganesan
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Artjom Simon
Chapter24 operator-overloading
Chapter24 operator-overloading
Deepak Singh
Applmgr
Applmgr
Khalil Shafeek
Lecture 4
Lecture 4
Mohammed Khan
Variadic functions
Variadic functions
ramyaranjith
MFC Rect2
MFC Rect2
Razvan Raducanu, PhD
MCRL2
MCRL2
kashif kashif
Code quailty metrics demystified
Code quailty metrics demystified
Jeroen Resoort
More Related Content
What's hot
VLSI Sequential Circuits II
VLSI Sequential Circuits II
Gouthaman V
Wrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensator
Flowa Oy
C++20 features
C++20 features
LogeekNightUkraine
Using zone.js
Using zone.js
Standa Opichal
Assignment#1
Assignment#1
NA000000
How c program execute in c program
How c program execute in c program
Rumman Ansari
array, function, pointer, pattern matching
array, function, pointer, pattern matching
Shakila Mahjabin
Using Grafana with InfluxDB 2.0 and Flux Lang by Jacob Lisi
Using Grafana with InfluxDB 2.0 and Flux Lang by Jacob Lisi
InfluxData
Andrii Orlov "Generators Flexibility in Modern Code"
Andrii Orlov "Generators Flexibility in Modern Code"
LogeekNightUkraine
Assignement of programming & problem solving(3)a.z
Assignement of programming & problem solving(3)a.z
Syed Umair
Queue oop
Queue oop
Gouda Mando
Roots of a quadratic equation1
Roots of a quadratic equation1
Wilson ak
Command line arguments
Command line arguments
ramyaranjith
Load-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOAD
Dharmalingam Ganesan
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Artjom Simon
Chapter24 operator-overloading
Chapter24 operator-overloading
Deepak Singh
Applmgr
Applmgr
Khalil Shafeek
Lecture 4
Lecture 4
Mohammed Khan
Variadic functions
Variadic functions
ramyaranjith
MFC Rect2
MFC Rect2
Razvan Raducanu, PhD
What's hot
(20)
VLSI Sequential Circuits II
VLSI Sequential Circuits II
Wrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensator
C++20 features
C++20 features
Using zone.js
Using zone.js
Assignment#1
Assignment#1
How c program execute in c program
How c program execute in c program
array, function, pointer, pattern matching
array, function, pointer, pattern matching
Using Grafana with InfluxDB 2.0 and Flux Lang by Jacob Lisi
Using Grafana with InfluxDB 2.0 and Flux Lang by Jacob Lisi
Andrii Orlov "Generators Flexibility in Modern Code"
Andrii Orlov "Generators Flexibility in Modern Code"
Assignement of programming & problem solving(3)a.z
Assignement of programming & problem solving(3)a.z
Queue oop
Queue oop
Roots of a quadratic equation1
Roots of a quadratic equation1
Command line arguments
Command line arguments
Load-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOAD
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Chapter24 operator-overloading
Chapter24 operator-overloading
Applmgr
Applmgr
Lecture 4
Lecture 4
Variadic functions
Variadic functions
MFC Rect2
MFC Rect2
Similar to Like a surgeon dissecting a completely functional reactive java-script app for the very first time
MCRL2
MCRL2
kashif kashif
Code quailty metrics demystified
Code quailty metrics demystified
Jeroen Resoort
Development of a Distributed Stream Processing System
Development of a Distributed Stream Processing System
Maycon Viana Bordin
Aop spring
Aop spring
chamilavt
Bowtie: Interactive Dashboards
Bowtie: Interactive Dashboards
Jacques Kvam
Mechatronics (2016) Unit II.pptx
Mechatronics (2016) Unit II.pptx
nitcse
Formal Verification of Web Service Interaction Contracts
Formal Verification of Web Service Interaction Contracts
Gera Shegalov
Formal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction Contract
Gera Shegalov
Reliability and Resilience
Reliability and Resilience
Donald Belcham
Intro to RX
Intro to RX
Scott Weinstein
Cbsecomputersciencecclass12boardproject bankmanagmentsystem-180703065625-conv...
Cbsecomputersciencecclass12boardproject bankmanagmentsystem-180703065625-conv...
sriram sarwan
RxJava 2 Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVM
Netesh Kumar
Reliability and Reslience
Reliability and Reslience
Donald Belcham
Opportunities to Improve System Reliability and Resilience by Donald Belcham
Opportunities to Improve System Reliability and Resilience by Donald Belcham
.NET Conf UY
Angular 16 – the rise of Signals
Angular 16 – the rise of Signals
Coding Academy
A calculus of mobile Real-Time processes
A calculus of mobile Real-Time processes
Polytechnique Montréal
Taming event-driven software via formal verification
Taming event-driven software via formal verification
AdaCore
Akka.NET streams and reactive streams
Akka.NET streams and reactive streams
Bartosz Sypytkowski
cscript_controller.pdf
cscript_controller.pdf
VcTrn1
Ecd302 unit 05(misc simulation tools)(new version)
Ecd302 unit 05(misc simulation tools)(new version)
Xi Qiu
Similar to Like a surgeon dissecting a completely functional reactive java-script app for the very first time
(20)
MCRL2
MCRL2
Code quailty metrics demystified
Code quailty metrics demystified
Development of a Distributed Stream Processing System
Development of a Distributed Stream Processing System
Aop spring
Aop spring
Bowtie: Interactive Dashboards
Bowtie: Interactive Dashboards
Mechatronics (2016) Unit II.pptx
Mechatronics (2016) Unit II.pptx
Formal Verification of Web Service Interaction Contracts
Formal Verification of Web Service Interaction Contracts
Formal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction Contract
Reliability and Resilience
Reliability and Resilience
Intro to RX
Intro to RX
Cbsecomputersciencecclass12boardproject bankmanagmentsystem-180703065625-conv...
Cbsecomputersciencecclass12boardproject bankmanagmentsystem-180703065625-conv...
RxJava 2 Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVM
Reliability and Reslience
Reliability and Reslience
Opportunities to Improve System Reliability and Resilience by Donald Belcham
Opportunities to Improve System Reliability and Resilience by Donald Belcham
Angular 16 – the rise of Signals
Angular 16 – the rise of Signals
A calculus of mobile Real-Time processes
A calculus of mobile Real-Time processes
Taming event-driven software via formal verification
Taming event-driven software via formal verification
Akka.NET streams and reactive streams
Akka.NET streams and reactive streams
cscript_controller.pdf
cscript_controller.pdf
Ecd302 unit 05(misc simulation tools)(new version)
Ecd302 unit 05(misc simulation tools)(new version)
Recently uploaded
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
alexjohnson7307
Revolutionizing SAP® Processes with Automation and Artificial Intelligence
Revolutionizing SAP® Processes with Automation and Artificial Intelligence
Precisely
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Mark Billinghurst
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
Working together SRE & Platform Engineering
Working together SRE & Platform Engineering
Marcus Vechiato
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Samy Fodil
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
iSEO AI
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
Paolo Missier
2024 May Patch Tuesday
2024 May Patch Tuesday
Ivanti
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
Hiroshi SHIBATA
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
Paolo Missier
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
ScyllaDB
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
VictorSzoltysek
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
Patrick Viafore
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
Srushith Repakula
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
AI mind or machine power point presentation
AI mind or machine power point presentation
yogeshlabana357357
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
IES VE
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
FIDO Alliance
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Leah Henrickson
Recently uploaded
(20)
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
Revolutionizing SAP® Processes with Automation and Artificial Intelligence
Revolutionizing SAP® Processes with Automation and Artificial Intelligence
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Working together SRE & Platform Engineering
Working together SRE & Platform Engineering
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
2024 May Patch Tuesday
2024 May Patch Tuesday
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
AI mind or machine power point presentation
AI mind or machine power point presentation
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Like a surgeon dissecting a completely functional reactive java-script app for the very first time
1.
Like A Surgeon: Dissecting
a completely Functional-Reactive app for the very first time... Netta Bondy: @_bondit_
2.
3.
4.
FRP Building Blocks Streams Pure
Functions
5.
FRP Building Blocks Streams Pure
Functions Streams - Observables Pure Functions
6.
FRP Building Blocks Streams
- Observables Pure FunctionsPure Functions - Operators
7.
FRP Building Blocks Streams
- Observables Pure Functions - Operators
8.
Separate reactive logic
from I/O Inputs: Outputs: startBtn = document .getElementById('start'); pauseBtn = document .getElementById('pause'); timerDisplay = document .getElementById('timer');
9.
A Stream Connects Input
to Output
10.
The timer 25:00 ,
24:59 ... Emit periodically Calculate value Start click
11.
Main stream -
The timer fromEvent(startBtn, 'click') .pipe(exhaustMap(e => timer(0, 1000)))
12.
Streams of Streams
13.
Main stream -
The timer fromEvent(startBtn, 'click') .pipe( exhaustMap(e => timer(0, 1000)) )
14.
Main stream -
The timer fromEvent(startBtn, 'click') .pipe( exhaustMap(e => timer(0, 1000)), map(i => 1500 - i), )
15.
Main stream -
The timer fromEvent(startBtn, 'click') .pipe( exhaustMap(e => timer(0, 1000)), map(i => 1500 - i), takeWhile(secs => secs >= 0) )
16.
The pause functionality
17.
Pause Functionality 1500 ,
1499, ... Start click Pause click 1400 , 1399, ... Start click
18.
Pause Functionality start =
startClick.pipe(mapTo(1)) pause = pauseClick.pipe(mapTo(0)) merge(start, pause) .pipe(switchMap(val => val ? countdown : NEVER ))
19.
Storing State Subjects
20.
start click pause click Getting latest timer
value 1500, 1499, ... 1399, 1398, ... 1400
21.
pausedTimer Subject pausedTimer =
new Subject(); countdown.pipe(sample(pause)) .subscribe(pausedTimer);
22.
Update timer stream pausedTimer
= new Subject(); timer(0, 1000).pipe( withLatestFrom(pausedTimer),
23.
Update timer stream timer(0,
1000).pipe( withLatestFrom(pausedTimer), map(([i, lastValue]) => lastValue - i))
24.
Update timer stream pausedTimer
= new BehaviorSubject(1500); timer(0, 1000).pipe( withLatestFrom(pausedTimer), map(([i, lastValue]) => lastValue - i))
25.
26.
- Repo: https://github.com/NettaB/reactive-pomodoro - Medium:
https://medium.com/@NettaB - Twitter: @_bondit_ Thank you!
Download now