售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
Title Page
Copyright
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
What Does Being Reactive Mean?
The reactive paradigm
Why do I need it?
Installation of tools
Node.js
bacon.js
RxJS
Your first code using reactive programming
Summary
Reacting for the First Time
The bacon.js observables
Creating our first observable
Observables from DOM events (asEventStream)
Observables from promises (fromPromise)
Observable node event emitter (fromEvent)
Observables from an array (fromArray)
Observables from an array (sequentially)
Observables from an interval (interval)
Observables from other sources
Properties
Changes in an observable
Reacting to changes
Subscribing
Subscribing using the onValue() method
Subscribing using the log method
Subscribing using the assign method
Acting when an error occurs
Reading how an operator works
Transforming events using bacon.js
Reusing observables
Observables' lazy evaluation
Summary
A World Full of Changes - Reactive Extensions to the Rescue
RxJS observables
Difference between bacon.js and RxJS observables
Hot and cold observables
Installing RxJS
Creating an observable
Creating an observable from iterable objects
Creating an observable from a sequence factory
Creating an observable using range ()
Creating an observable using period of time
Creating an observable from callbacks
Creating an observable from a promise
Creating empty observables
Creating an observable from a single value
Creating an observable from a factory function
Creating an observable from arbitrary arguments
Creating an observable from an error
Creating observables from DOM events (or EventEmitter)
Creating an observable from an arbitrary source
Subscribing to changes (Observer)
RxJS Subjects
RxJS Disposable
RxJS Schedulers
Summary
Transforming Data - Map, Filter, and Reduce
Adding operators to observables
The map() operator
The flatMap() operator
The filter() operator
The reduce() operator
Summary
The World Changes Too Fast - Operators to Deal with Backpressure
What is backpressure?
Common strategies to deal with backpressure
Lossy strategies to deal with backpressure
The throttle() operator
The sample() operator
The debounce() operator
The pausable() observables
Loss-less operators to deal with backpressure
Buffering
The bufferWithCount() operator
The bufferWithTime() operator
The bufferWithTimeOrCount() operator
Pausable observables (with buffer)
Controlled observables
More ways to filter data
The first() operator
The take() operator
The takeLast() operator
The takeWhile() operator
The skip() operator
The skipWhile() operator
Summary
Too Many Sources - Combining Observables
When do I need to combine observables?
Running observables
Concatenating observables
Using the concat() operator
Using the merge() operator
Using the concatAll() operator
Using the mergeAll() operator
Combining observables
Using the forkJoin() operator
Using the zip() operator
Using the zipIterable() operator
Summary
Something is Wrong - Testing and Dealing with Errors
Dealing with errors
Acting when an error occurs
Treating an error
The catch() operator
The onErrorResumeNext() operator
The retry() operator
The mergeDelayError() operator
Testing our application
Testing in the server
Testing in the browser
Testing applications using RxJS
Summary
More about Operators
The road so far
The fundamentals of RxJS
The map() operator versus the flatMap() operator
Challenge - Creating a function to filter elements using only the flatMap() operator
Filtering data
Aggregating data
Going beyond the basics
Dealing with backpressure
Combining observables
Other important operators
The flatMapLatest() operator
The flatMapFirst() operator
The finally() operator
The groupBy() operator
The do() operator
Summary
Composition
What is a transducer?
Available transducer implementations for JavaScript
The transducers-js API
Using transducers
Using transducers with RxJS
Testing transducers
A performance comparison for JavaScript code using transducers
Summary
A Real-Time Server
The web chat server
Creating the project
The architecture of the server
Implementing the server
DataSource
Service to send messages
Test implementation
Service implementation
Service to listen to new messages
Test implementation
Service implementation
Service to block messages from a given user
Test implementation
Service implementation
Service to send a command
Test implementation
Service implementation
Handling WebSocket connections
Scaling the server
Connecting to Redis
Using Redis as the DataSource for messages
Summary
A Real-Time Client
Installing dependencies
The structure of our client
Building the application for the first time
Connecting to the server application
Using RxJS to manage user input
Connecting user interactions and server communication
Improving interaction with RxJS
Batching changes to the DOM
Testing the application
Summary
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜