Introduction
The tap operator lets you run extra code when data flows through an observable without changing the data itself.
Logging values passing through an observable to see what data is flowing.
Triggering a loading spinner when a request starts and stops.
Performing side actions like updating a variable or calling a function without affecting the main data.
Debugging observable streams by inspecting values without modifying them.