Skip to content
easyjunior1 min read #frontend #rxjs

How does an Observable differ from a Promise? ​

Answer ​

A Promise resolves once and begins immediately, while an Observable can emit zero or many values, is usually lazy, and supports cancellation through unsubscription. Observables are a better fit for events, streams, and composed asynchronous flows.

Context ​

RxJS models asynchronous values as composable streams. The important design choice is the source lifetime and concurrency rule: cancel, merge, queue, or ignore competing work deliberately.

Example ​

ts
const results$ = query$.pipe(
  debounceTime(250),
  distinctUntilChanged(),
  switchMap(query => api.search(query))
)

switchMap ensures an older search result cannot overwrite a newer query.

Practical considerations ​

  1. Choose the approach from the requirement and constraints, not from habit.
  2. Include validation, error handling, and cleanup where the boundary requires them.
  3. Verify the observable result with focused tests or measurement.

Follow-up prompts ​

  • What failure mode would you expect if this were implemented incorrectly?
  • How would you test this behaviour?
  • What changes when the feature must scale to a larger application or team?

In practice ​

For this easy-level topic, make assumptions explicit, choose the smallest safe implementation, and verify the behavior at the relevant boundary.