Bird
Raised Fist0
Angularframework~5 mins

Observable vs Promise mental model in Angular - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is an Observable in Angular?
An Observable is a way to handle multiple asynchronous events over time. It can emit many values, and you can listen to these values as they come.
Click to reveal answer
beginner
What is a Promise in Angular?
A Promise handles a single asynchronous event. It either resolves with a value or rejects with an error, but only once.
Click to reveal answer
intermediate
How does an Observable differ from a Promise in terms of values emitted?
An Observable can emit multiple values over time, while a Promise emits only one value or error once.
Click to reveal answer
intermediate
Can you cancel an Observable subscription? What about a Promise?
Yes, you can cancel an Observable subscription to stop receiving values. Promises cannot be cancelled once started.
Click to reveal answer
intermediate
Why might you choose an Observable over a Promise in Angular?
Choose Observable when you need to handle multiple values, streams of data, or want to cancel the operation. Use Promise for a single async result.
Click to reveal answer
Which of these can emit multiple values over time?
APromise
BObservable
CBoth Observable and Promise
DNeither
Can you cancel a Promise once it starts?
ANo, Promises cannot be cancelled
BOnly if it is resolved
COnly in Angular
DYes, easily
What does a Promise return when it completes successfully?
AA single value
BMultiple values
CAn Observable
DNothing
Which is better for handling streams of data in Angular?
APromise
BBoth are equally good
CObservable
DNeither
How do you stop receiving data from an Observable?
ABy resolving the Promise
BBy calling .cancel() on the Observable
CYou cannot stop it
DBy unsubscribing from the Observable
Explain in your own words the main difference between an Observable and a Promise.
Think about how many values each can handle and if you can stop them.
You got /4 concepts.
    Describe a situation in Angular where using an Observable is better than a Promise.
    Consider when data comes in many pieces over time.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which statement best describes the difference between an Observable and a Promise in Angular?
      easy
      A. Observable is synchronous; Promise is asynchronous.
      B. Promise handles a single future value; Observable can handle multiple values over time.
      C. Promise can be cancelled; Observable cannot be cancelled.
      D. Observable handles a single future value; Promise can handle multiple values over time.

      Solution

      1. Step 1: Understand the nature of Promise

        A Promise represents a single future value or error that will be resolved once.
      2. Step 2: Understand the nature of Observable

        An Observable can emit multiple values over time and can be stopped or cancelled.
      3. Final Answer:

        Promise handles a single future value; Observable can handle multiple values over time. -> Option B
      4. Quick Check:

        Promise = single value, Observable = multiple values [OK]
      Hint: Promise = one value, Observable = many values over time [OK]
      Common Mistakes:
      • Thinking Promise can emit multiple values
      • Believing Observable cannot be cancelled
      • Confusing synchronous and asynchronous behavior
      2. Which of the following is the correct way to create a Promise that resolves with the value 42 in Angular?
      easy
      A. const p = new Promise((resolve, reject) => reject(42));
      B. const p = new Promise(resolve => reject(42));
      C. const p = new Promise((resolve, reject) => resolve(42));
      D. const p = new Promise(() => 42);

      Solution

      1. Step 1: Check Promise constructor syntax

        The Promise constructor takes a function with two parameters: resolve and reject.
      2. Step 2: Verify correct usage to resolve with 42

        Calling resolve(42) inside the function correctly resolves the Promise with 42.
      3. Final Answer:

        const p = new Promise((resolve, reject) => resolve(42)); -> Option C
      4. Quick Check:

        Promise constructor needs resolve and reject parameters [OK]
      Hint: Promise constructor needs (resolve, reject) parameters [OK]
      Common Mistakes:
      • Omitting reject parameter in Promise constructor
      • Calling reject instead of resolve to return value
      • Returning value directly without resolve
      3. Consider this Angular code snippet:
      const obs = new Observable(subscriber => {
        subscriber.next(1);
        subscriber.next(2);
        subscriber.complete();
      });
      
      obs.subscribe(value => console.log(value));

      What will be printed to the console?
      medium
      A. 1 2
      B. 1
      C. 2
      D. No output

      Solution

      1. Step 1: Analyze Observable emissions

        The Observable emits two values: 1 and 2, then completes.
      2. Step 2: Understand subscription behavior

        The subscriber logs each emitted value, so both 1 and 2 are printed.
      3. Final Answer:

        1 2 -> Option A
      4. Quick Check:

        Observable emits multiple values, all logged [OK]
      Hint: Observable emits all next() values until complete [OK]
      Common Mistakes:
      • Assuming only first value is logged
      • Thinking complete() emits a value
      • Confusing Observable with Promise single value
      4. What is wrong with this Promise usage in Angular?
      const p = new Promise((resolve, reject) => {
        setTimeout(() => resolve('done'), 1000);
      });
      p.then(result => console.log(result));
      p.catch(error => console.error(error));
      p.cancel();
      medium
      A. Promises do not have a cancel() method, so calling it causes an error.
      B. The Promise should use reject() instead of resolve() inside setTimeout.
      C. The then() method should come after catch(), not before.
      D. The Promise constructor is missing the reject parameter.

      Solution

      1. Step 1: Check Promise API for cancellation

        Promises do not support cancellation; there is no cancel() method.
      2. Step 2: Identify error cause

        Calling p.cancel() will cause a runtime error because cancel() is undefined.
      3. Final Answer:

        Promises do not have a cancel() method, so calling it causes an error. -> Option A
      4. Quick Check:

        Promise cancellation is not supported [OK]
      Hint: Promises cannot be cancelled; no cancel() method exists [OK]
      Common Mistakes:
      • Thinking Promise supports cancel() like Observable
      • Confusing resolve and reject usage
      • Believing then() must come after catch()
      5. You want to fetch user data that updates every 5 seconds and be able to stop the updates when the user navigates away. Which approach fits best in Angular?
      hard
      A. Use an Observable but do not unsubscribe; it stops automatically.
      B. Use a Promise that resolves with user data every 5 seconds.
      C. Use a Promise and call cancel() to stop fetching data.
      D. Use an Observable that emits new user data every 5 seconds and unsubscribe on navigation.

      Solution

      1. Step 1: Identify need for multiple values over time

        Fetching user data every 5 seconds means multiple values over time, which suits an Observable.
      2. Step 2: Understand cancellation requirement

        Observables can be unsubscribed to stop receiving updates, fitting the need to stop on navigation.
      3. Final Answer:

        Use an Observable that emits new user data every 5 seconds and unsubscribe on navigation. -> Option D
      4. Quick Check:

        Multiple updates + cancel = Observable with unsubscribe [OK]
      Hint: Multiple updates + cancel = Observable with unsubscribe [OK]
      Common Mistakes:
      • Using Promise for multiple repeated values
      • Assuming Promise supports cancel()
      • Not unsubscribing Observable causing memory leaks
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard