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));