Sobes.tech
Middle

Какви са сходствата и разликите между Observable и Promise?

sobes.tech AI

Отговор от AI

Observable представлява поток от данни, който може да излъчва множество стойности с течение на времето. Той е реактивен и поддържа анулиране на абонамента. Promise винаги се разрешава или отхвърля само веднъж и е еднократен. Observable поддържа оператори за преобразуване на данни, Promise — не.

Характеристика Observable Promise
Брой стойности Може да излъчва множество стойности Винаги една стойност (resolve/reject)
Анулиране Поддържа анулиране на абонамента Не поддържа анулиране
Реактивност Реактивен Не
Оператори Поддържа оператори (map, filter и др.) Не
Ленивост Ленив (изпълнява се при абонамент) Жаден (изпълнява се веднага)

Пример за 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),
  error: err => console.error('Грешка на Observable:', err),
  complete: () => console.log('Observable завърши'),
});

Пример за Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise разрешена');
    // reject('Promise отхвърлена');
  }, 1000);
});

myPromise
  .then(value => console.log('Стойност на Promise:', value))
  .catch(error => console.error('Грешка на Promise:', error));