RXJS Roadmap
18 sections • 285 topics
- 1. of, from, and fromEvent - Creating Observables
- Example: Basic creation operators
- 2. interval, timer, and range - Periodic Observables
- Example: Time-based and sequence creators
- 3. fromPromise - Converting Promises to Observables
- Example: Promise and async integration
- 4. ajax and fetch - HTTP Request Observables
- Example: HTTP requests with ajax and fetch
- 5. Custom Observable Creation (new Observable())
- Example: Custom Observable implementation
- 6. EMPTY, NEVER, and throwError - Constant Observables
- Example: Special Observable constants
- Section 1 Summary
- 1. subscribe() Method - Observer Pattern Implementation
- Example: Different subscribe patterns
- 2. Subscription Object and unsubscribe() - Memory Management
- Example: Subscription lifecycle management
- 3. Subscription add() and remove() - Composition Methods
- Example: Composing subscriptions
- 4. AutoUnsubscribe Patterns - Angular and React Cleanup
- Example: AutoUnsubscribe patterns
- 5. Memory Leak Prevention - Subscription Best Practices
- Example: Memory leak prevention
- 6. Subscription Containers - Managing Multiple Subscriptions
- Example: Subscription container patterns
- Section 2 Summary
- 1. map and mapTo - Value Transformation Operators
- Example: map and mapTo transformations
- 2. pluck for Property Extraction
- Example: pluck deprecated - use map instead
- 3. scan and reduce - Accumulation Patterns
- Example: scan vs reduce accumulation
- 4. buffer, bufferTime, bufferCount - Buffering Operators
- Example: Buffering strategies
- 5. concatMap, mergeMap, switchMap - Flattening Operators
- Example: Higher-order mapping strategies
- 6. exhaustMap - Ignore-while-active Higher-order Operator
- Example: exhaustMap for preventing concurrent operations
- Section 3 Summary
- 1. filter - Conditional Value Filtering Operator
- Example: Conditional filtering patterns
- 2. take, takeUntil, takeWhile - Take Operators
- Example: Take operator variants
- 3. first, last, single - Value Extraction Operators
- Example: Value extraction operators
- 4. skip, skipUntil, skipWhile - Skip Operators
- Example: Skip operator patterns
- 5. distinct and distinctUntilChanged - Deduplication
- Example: Deduplication strategies
- 6. debounceTime and throttleTime - Rate Limiting Operators
- Example: Rate limiting strategies
- Section 4 Summary
- 1. merge and mergeAll - Concurrent Stream Combination
- Example: Concurrent stream combination with merge
- 2. concat and concatAll - Sequential Stream Combination
- Example: Sequential stream combination with concat
- 3. combineLatest and combineLatestWith - Multi-stream Sync
- Example: Multi-stream coordination with combineLatest
- 4. withLatestFrom - Auxiliary Stream Integration
- Example: Auxiliary stream integration with withLatestFrom
- 5. zip and zipWith - Paired Value Emission
- Example: Paired value emission with zip
- 6. startWith and endWith - Stream Initialization
- Example: Stream initialization and termination
- Section 5 Summary
- 1. catchError - Exception Handling and Recovery
- Example: Error catching and recovery
- 2. retry and retryWhen - Automatic Retry Logic
- Example: Retry strategies
- 3. throwError - Error Emission Operator
- Example: Error emission patterns
- 4. onErrorResumeNext - Alternative Stream Switching
- Example: Alternative stream switching
- 5. timeout and timeoutWith - Time-based Errors
- Example: Timeout handling
- 6. finalize - Cleanup Operations (like finally)
- Example: Cleanup operations with finalize
- Section 6 Summary
- 1. Subject - Multicast and Imperative Emission
- Example: Subject basic usage and multicasting
- 2. BehaviorSubject - State Management with Initial Value
- Example: BehaviorSubject for state management
- 3. ReplaySubject - Historical Value Replay (n values)
- Example: ReplaySubject value replay
- 4. AsyncSubject - Last Value Emission Only
- Example: AsyncSubject final value emission
- 5. share and shareReplay - Reference Counting Multicast
- Example: Sharing and replay strategies
- 6. multicast and publish - Custom Multicasting Operators
- Example: Custom multicasting patterns
- Section 7 Summary
- 1. asyncScheduler - Macro-task Scheduling (setTimeout)
- Example: asyncScheduler for async execution
- 2. queueScheduler - Synchronous Queue Scheduling
- Example: queueScheduler for synchronous execution
- 3. animationFrameScheduler - Browser Animation Sync
- Example: animationFrameScheduler for smooth animations
- 4. asapScheduler - Micro-task Scheduling (Promise)
- Example: asapScheduler for micro-task execution
- 5. observeOn and subscribeOn - Execution Context Control
- Example: observeOn vs subscribeOn control
- 6. VirtualTimeScheduler - Testing and Marble Diagrams
- Example: VirtualTimeScheduler for testing
- Section 8 Summary
- 1. switchMap - Cancel Previous, Switch to Latest
- Example: switchMap for request cancellation
- 2. mergeMap (flatMap) - Concurrent Inner Observables
- Example: mergeMap for parallel processing
- 3. concatMap - Sequential Inner Observable Processing
- Example: concatMap for sequential processing
- 4. exhaustMap - Ignore New While Busy Pattern
- Example: exhaustMap to prevent duplicate operations
- 5. expand - Recursive Observable Generation
- Example: expand for recursive operations
- 6. window and windowTime - Grouped Emission Windows
- Example: window operators for grouped processing
- Section 9 Summary
- 1. tap (do) - Side Effects Without Stream Modification
- Example: tap for debugging and side effects
- 2. delay and delayWhen - Time-based Stream Delays
- Example: delay operators for timing control
- 3. repeat and repeatWhen - Stream Repetition
- Example: repeat operators for stream repetition
- 4. sample and sampleTime - Periodic Sampling
- Example: sample operators for value sampling
- 5. audit and auditTime - Trailing Edge Throttling
- Example: audit operators for trailing edge throttling
- 6. materialize and dematerialize - Notification Objects
- Example: materialize and dematerialize for metadata handling
- Section 10 Summary
- 1. iif - Conditional Observable Selection (ternary)
- Example: iif for conditional observable selection
- 2. every - Universal Condition Checking (all values)
- Example: every for universal condition checking
- 3. find and findIndex - First Match Operations
- Example: find and findIndex for searching
- 4. isEmpty - Empty Stream Detection
- Example: isEmpty for empty stream detection
- 5. defaultIfEmpty - Fallback Value Provision
- Example: defaultIfEmpty for fallback values
- 6. sequenceEqual - Stream Comparison Operator
- Example: sequenceEqual for stream comparison
- Section 11 Summary
- 1. debounceTime - Input Stabilization (search input)
- Example: debounceTime for input stabilization
- 2. throttleTime - Rate Limiting (leading edge)
- Example: throttleTime for rate limiting
- 3. auditTime - Trailing Edge Rate Limiting
- Example: auditTime for trailing edge sampling
- 4. sampleTime - Periodic Value Sampling
- Example: sampleTime for periodic sampling
- 5. timeInterval - Emission Time Measurement
- Example: timeInterval for timing measurement
- 6. timestamp - Emission Timestamping Operator
- Example: timestamp for emission timestamping
- Section 12 Summary
- 1. Creating Custom Pipeable Operators (pipe pattern)
- Example: Basic custom pipeable operator
- Example: Parameterized custom operator
- Example: Operator with state management
- 2. Operator Function Composition - Reusable Patterns
- Example: Composing operators into reusable functions
- Example: Dynamic operator composition
- 3. Reusable Operator Libraries - Sharing Code
- Example: Building a custom operator library
- Example: Domain-specific operator library
- 4. Higher-Order Custom Operator Development
- Example: Custom flattening operator
- Example: Custom buffering operator
- 5. Operator Testing and Validation - Unit Tests
- Example: Marble testing custom operators
- Example: Testing operator with state
- Example: Type testing
- 6. Community Operator Patterns (RxJS Ninja, etc.)
- Example: Common community operator patterns
- Example: Advanced retry with exponential backoff
- Example: Caching with stale-while-revalidate
- Section 13 Summary
- 1. TestScheduler - Virtual Time Testing Framework
- Example: Basic TestScheduler setup
- Example: Testing asynchronous operations synchronously
- 2. Marble Testing Syntax - ASCII Diagram Patterns
- Example: Marble diagram patterns
- Example: Complex marble test
- 3. hot() and cold() - Observable Testing Helpers
- Example: cold() vs hot() observables
- Example: Using values object for complex data
- 4. expectObservable() and expectSubscriptions() - Assertions
- Example: Using expectObservable()
- Example: Using expectSubscriptions()
- 5. flush() and getMessages() - Test Execution Control
- Example: Using flush() for manual control
- Example: Using getMessages() for custom assertions
- 6. Mock Observers and Subscription Testing
- Example: Mock observer testing
- Example: Subscription lifecycle testing
- Example: Testing with Subject mocks
- Section 14 Summary
- 1. Subscription Management - Preventing Memory Leaks
- Example: Subscription container pattern
- Example: takeUntil pattern for automatic cleanup
- Example: SubSink pattern for advanced subscription management
- 2. Operator Chain Optimization - Pipeline Efficiency
- Example: Operator ordering optimization
- Example: Avoiding nested subscriptions
- Example: Choosing the right flattening operator
- 3. Memory Leak Detection and Prevention Strategies
- Example: Common memory leak scenarios and fixes
- Example: Detecting memory leaks
- Example: shareReplay memory leak prevention
- 4. Cold vs Hot Observable - Performance Characteristics
- Example: Cold observable behavior
- Example: Converting cold to hot for better performance
- Example: Real-world HTTP optimization
- 5. share vs shareReplay vs refCount - Multicast Strategies
- Example: Choosing the right sharing strategy
- Example: Share strategy comparison
- 6. Backpressure Handling - Buffer Management
- Example: Handling fast producers with sampling
- Example: Buffering for batch processing
- Example: Backpressure with concurrency control
- Example: Preventing queue overflow
- Section 15 Summary
- 1. Angular RxJS Integration - async Pipe and Services
- Example: async pipe for automatic subscription management
- Example: Reactive forms with RxJS
- Example: Angular service with state management
- 2. React Hooks with RxJS - useObservable Pattern
- Example: Custom useObservable hook
- Example: useSubject for event handling
- Example: Advanced observable state management
- 3. Vue.js Composition API - RxJS Integration
- Example: Vue composables for RxJS
- Example: Vue RxJS state management
- 4. Node.js Streams - RxJS Integration Patterns
- Example: Node.js stream to observable
- Example: Observable to Node.js stream
- 5. WebSocket Integration - Real-time Data Streams
- Example: Basic WebSocket observable
- Example: WebSocket with auto-reconnect
- Example: WebSocket with message queue and multiplexing
- 6. Service Worker and RxJS - PWA Patterns
- Example: Service Worker messaging with RxJS
- Example: Cache strategies with RxJS
- Section 16 Summary
- 1. HTTP Request Management - Cancellation and Retry
- Example: Search with auto-cancel and debounce
- Example: Prevent duplicate submissions
- Example: Parallel requests with concurrency limit
- Example: Polling with start/stop control
- 2. User Input Handling - Form Validation with RxJS
- Example: Real-time form validation
- Example: Password strength meter
- Example: Multi-step form with state management
- 3. Real-time Data Synchronization - Live Updates
- Example: Optimistic update pattern
- Example: Offline-first with sync queue
- 4. WebSocket Message Processing - Bi-directional Streams
- Example: WebSocket message router
- 5. Animation and UI State - RxJS State Management
- Example: Smooth scroll animation
- Example: Drag and drop with RxJS
- Example: UI state machine
- 6. Complex Workflow Orchestration - Multi-step Flows
- Example: Multi-step checkout workflow
- Example: Circuit breaker pattern
- Section 17 Summary
- 1. RxJS DevTools - Browser Extension for Debugging
- Example: Enable RxJS DevTools instrumentation
- 2. tap Operator - Stream Debugging and Logging
- Example: Comprehensive tap debugging
- Example: Stack trace capture with tap
- 3. Observable Inspector - Stream Visualization Tools
- Example: Custom observable inspector
- 4. Console Logging Patterns - Debugging Observables
- Example: Advanced logging patterns
- Example: Production-safe conditional logging
- 5. Stack Trace Preservation - Error Context Tracking
- Example: Enhanced error context
- Example: Zone.js async stack traces (Angular)
- 6. Production Debugging - Monitoring Strategies
- Example: Production error tracking
- Example: Performance monitoring
- Example: Feature-flag controlled debugging
- Section 18 Summary