Sobes.tech
Middle

Aké sú podobnosti a rozdiely medzi Observable a Promise?

sobes.tech AI

Odpoveď od AI

Observable predstavuje tok dát, ktorý je schopný vysielať viacero hodnôt v čase. Je reaktívny a podporuje zrušenie odberu. Promise je vždy vyriešené alebo odmietnuté iba raz a je jednorazové. Observable podporuje operátory na transformáciu dát, Promise nie.

Charakteristika Observable Promise
Počet hodnôt Môže vysielať viacero hodnôt Vždy jedna hodnota (resolve/reject)
Zrušenie Podporuje zrušenie odberu Nepodporuje zrušenie
Reaktivita Reaktívny Nie
Operátory Podporuje operátory (map, filter, atď.) Nie
Lenivosť Lenivý (vykonáva sa pri odberu) Chytrý (vykonáva sa okamžite)

Príklad 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('Hodnota Observable:', value),
  error: err => console.error('Chyba Observable:', err),
  complete: () => console.log('Observable ukončený'),
});

Príklad Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise vyriešená');
    // reject('Promise zamietnutá');
  }, 1000);
});

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