Sobes.tech
Middle

Mik a hasonlóságok és különbségek az Observable és Promise között?

sobes.tech MI

Válasz az MI-től

Observable egy adatfolyamot képvisel, amely képes idővel több értéket kibocsátani. Reaktív és támogatja az előfizetés megszakítását. A Promise mindig csak egyszer oldódik meg vagy utasítódik el, és egyszer használható. Az Observable támogatja az adatok átalakítására szolgáló operátorokat, a Promise nem.

Jellemző Observable Promise
Értékek száma Több értéket is kibocsáthat Mindig egy érték (resolve/reject)
Megszakítás Támogatja az előfizetés megszakítását Nem támogatja
Reaktivitás Reaktív Nem
Operátorok Támogatja az operátorokat (map, filter, stb.) Nem
Lusta mód Lusta (előfizetéskor fut) Türelmetlen (azonnal fut)

Observable példa:

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 érték:', value),
  error: err => console.error('Observable hiba:', err),
  complete: () => console.log('Observable befejeződött'),
});

Promise példa:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise megoldva');
    // reject('Promise elutasítva');
  }, 1000);
});

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