Sobes.tech
Middle

What are the similarities and differences between Observable and Promise?

sobes.tech AI

Answer from AI

Observable represents a data stream capable of emitting multiple values over time. It is reactive and supports subscription cancellation. Promise always resolves or rejects only once and is one-time. Observable supports operators for transforming data, Promise does not.

Characteristic Observable Promise
Number of values Can emit multiple values Always one value (resolve/reject)
Cancellation Supports subscription cancellation Does not support cancellation
Reactivity Reactive Not reactive
Operators Supports operators (map, filter, etc.) No
Laziness Lazy (executes upon subscription) Eager (executes immediately)

Example of Observable:

import { Observable } from 'rxjs';

const myObservable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  setTimeout(() => {
    subscriber.next(3);
    subscriber.complete();
  }, 1000);
});

myObservable.subscribe({
  next: value => console.log('Observable value:', value),
  error: err => console.error('Observable error:', err),
  complete: () => console.log('Observable complete'),
});

Example of Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise resolved');
    // reject('Promise rejected');
  }, 1000);
});

myPromise
  .then(value => console.log('Promise value:', value))
  .catch(error => console.error('Promise error:', error));