ruby javascript inspirational browser software architecture programming languages iot performance

Streaming and event-based programming using FRP and RxJS

Matthew Podwysocki ยท Barcelona Future JS

What's does a mouse drag event have in common with an Array of numbers? The answer to this question may surprise you: they are **both collections**. This key insight holds the key to dramatically simplifying asynchronous programming in JavaScript. In this talk you will learn how you can use the familiar JavaScript Array methods to create surprisingly expressive asynchronous programs. Using just a few functions, you will learn how to do the following: - Declaratively build complex events out of simple events (ex. drag n' drop) - Coordinate and sequence multiple Ajax requests - Reactively update UI's in response to data changes - Eliminate memory leaks caused by neglecting to unsubscribe from events - Gracefully propagate and handle asynchronous exceptions In this talk we'll be exploring the [Reactive Extensions (RxJS) library](https://github.com/Reactive-Extensions/RxJS) which allows us to treat events as collections. We'll also contrast Rx with Promises, another popular approach to building asynchronous programs in JavaScript, and see how it plays with the future of JavaScript with generators on the horizon as well as async/await. We'll also look into streaming APIs and how we can handle backpressure and be a good source for streaming APIs in JavaScript.