reinventing rxjs€¦ · introducing rxjs part of the reactive x family api for asynchronous...

28
REINVENTING RXJS @_maxgallo

Upload: others

Post on 31-May-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

REINVENTING RXJS@_maxgallo

Page 2: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

HI !

I'M MAX GALLOAbout me:

!

"

#

$

%

&

Principal Engineer

twitter: @_maxgallomore: maxgallo.io

Page 3: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

HERE'S THE AGENDA1. Introduction

2. Reinventing RxJS3. Deep Dive Schedulers

Page 4: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

INTRODUCTION

Page 5: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

INTRODUCING RXJSPart of the Reactive X Family

API for asynchronous programmingwith observable streams

Page 6: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

REINVENTINGTHE WHEEL

BY

TAKING THINGS APART

Page 7: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

REINVENTING RXJS

Page 8: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING
Page 9: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

RXJS CODE FIRST IMPRESSIONS

> Syntax is library specific> Explicit Subscription> Observable TC39 stage 1

> Pipeline operator TC39 stage 1

Page 10: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

! LET'S REINVENT RXJS

Page 11: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

Source

Observable

Next

Observable

Current

Observable

Source

Observable

Next

Observable

Current

Observable

Source

Observable

Next

Observable

Current

Observable

Source

Observable

RXJS OPERATORS

Operator 1 -->> Operator 2 -->> Operator 3

Page 12: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

RXJS FROM THE INSIDE

> Made of reusable parts > Streams> Standard contract between parts

> custom operators> Lazy evaluation

> Synchronous by default > Schedulers

Page 13: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

DEEP DIVE SCHEDULERS

Page 14: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

Schedulers in RxJS are things that control the order of event emissions (to Observers) and the speed of those event emissions.

— André Staltz

Page 15: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

ORDER OF EVENT EMISSIONSSPEED OF EVENT EMISSIONS

Page 16: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING
Page 17: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

CONSOLE

Page 18: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

QUEUE / ASAP / ASYNC / ANIMATIONFRAME

Page 19: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

requestAnimationFrame(task) | Promise.resolve().then(task) | | | | |

QUEUE / ASAP / ASYNC / ANIMATIONFRAME | | | | synchronous | | setInterval(task, delay)

Page 20: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

Order of event emissions

QUEUE / ASAP / ASYNC / ANIMATIONFRAME

Page 21: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

Order of event emissions

QUEUE / ASAP / ASYNC / ANIMATIONFRAMESpeed of event emissions

/ VIRTUALTIME /

Page 22: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

VIRTUAL TIME SCHEDULER( Hands on

! example )

Page 23: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

WE MADE IT !

Page 24: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

> DISASSEMBLETAKE THINGS APART TO UNDERSTAND

WHAT'S GOING ON

Page 25: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

> REINVENTBUILD YOUR OWN VERSION

Page 26: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

> LEARNBUILD MEANS LEARN

Page 27: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

> SHARETELL OTHERS WHAT YOU DID

Page 28: REINVENTING RXJS€¦ · INTRODUCING RXJS Part of the Reactive X Family API for asynchronous programming with observable streams. REINVENTING THE WHEEL BY TAKING THINGS APART. REINVENTING

DISASSEMBLE / REINVENT / LEARN / SHARE

twitter @_maxgalloother maxgallo.io

THANK YOU !

slides github.com/maxgallo/talk-reinventing-rxjs