# RxJS Learning Path (Pareto Principle) ## 1. Understanding the Basics of Reactive Programming - [ ] Concept of Streams: Learn what streams are in the context of RxJS. - [ ] Observables: Understand observables, the core abstraction in RxJS. - [ ] Observer Pattern: Learn how observers subscribe to observables. ## 2. Core Operations with Observables - [ ] Creating Observables: Use creation functions like `of`, `from`, `interval`, and `new Observable()`. - [ ] Subscribing: Understand the `subscribe` method and how to handle data, errors, and completion. - [ ] Disposing: Learn how to unsubscribe and clean up with the `unsubscribe` method to prevent memory leaks. ## 3. Transforming Data Streams - [ ] Map and Pluck: Transform the items emitted by an Observable. - [ ] Filter: Filter data based on conditions. - [ ] Reduce: Accumulate data over time. ## 4. Combining Streams - [ ] Merge and Concat: Combine multiple observables into one. - [ ] SwitchMap: Cancel previous inner observable on a new value. - [ ] CombineLatest: Combine multiple observables, emitting the latest values of each. ## 5. Controlling the Flow - [ ] Debounce and Throttle: Control the number of events based on time. - [ ] Take and First: Limit the number of items from an observable. - [ ] Skip: Ignore the first n items. ## 6. Error Handling - [ ] CatchError: Handle errors within the observable chain. - [ ] Retry: Retry an observable sequence on error. ## 7. Subjects and Multicasted Observables - [ ] Subject: Understand how a Subject can act as both an Observable and an Observer. - [ ] BehaviorSubject: Know how to use BehaviorSubject for holding and emitting the latest value. - [ ] ReplaySubject: Learn how to buffer and replay emissions to new subscribers. ## 8. Utility Operators - [ ] Tap: Tap into an observable sequence to perform side effects. - [ ] Delay: Delay the emissions of an observable. ## 9. Advanced Concepts - [ ] Hot vs Cold Observables: Understand the difference between hot and cold observables. - [ ] Schedulers: Learn how schedulers control concurrency. ## 10. Best Practices and Common Usage Patterns - [ ] Resource Management: Learn how to use operators like `using` and `finalize` to manage resources. - [ ] Higher-Order Observables: Get comfortable with observables that emit other observables and how to flatten them with operators like `concatAll` or `mergeAll`. ## Resources to Follow - [ ] Official Documentation: Start with the official RxJS docs for the most accurate information. - [ ] Tutorials: Look for hands-on tutorials that focus on the key concepts listed above. - [ ] GitHub Repositories: Find and study real-world projects using RxJS. - [ ] Courses and Videos: Use platforms like Coursera, Udemy, or free YouTube tutorials that emphasize the core 20%. - [ ] Community: Engage with the community on platforms like Stack Overflow, Reddit, or RxJS Gitter.