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