Sobes.tech
Middle

Koje su sličnosti i razlike između Observable i Promise?

sobes.tech АИ

Одговор од АИ

Observable predstavlja tok podataka koji je sposoban da emituje više vrednosti tokom vremena. On je reaktivan i podržava otkazivanje pretplate. Promise se uvek rešava ili odbacuje samo jednom i je jednokratni. Observable podržava operatore za transformaciju podataka, Promise ne.

Karakteristika Observable Promise
Broj vrednosti Može emitovati više vrednosti Uvek jedna vrednost (resolve/reject)
Otkazivanje Podržava otkazivanje pretplate Ne podržava otkazivanje
Reaktivnost Reaktivan Ne
Operatori Podržava operatore (map, filter, itd.) Ne
Lenjost Lenj (izvršava se pri pretplati) Žedan (izvršava se odmah)

Primer 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('Vrednost Observable:', value),
  error: err => console.error('Greška Observable:', err),
  complete: () => console.log('Observable je završio'),
});

Primer Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise rešena');
    // reject('Promise odbačena');
  }, 1000);
});

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