Middle
Jakie są podobieństwa i różnice między Observable a Promise?
sobes.tech AI
Odpowiedź od AI
Observable reprezentuje strumień danych, który może emitować wiele wartości w czasie. Jest reaktywny i obsługuje anulowanie subskrypcji. Promise zawsze jest rozwiązywane lub odrzucane tylko raz i jest jednorazowe. Observable obsługuje operatory do przekształcania danych, Promise nie.
| Charakterystyka | Observable | Promise |
|---|---|---|
| Liczba wartości | Może emitować wiele wartości | Zawsze jedna wartość (resolve/reject) |
| Anulowanie | Obsługuje anulowanie subskrypcji | Nie obsługuje anulowania |
| Reaktywność | Reaktywny | Nie |
| Operatory | Obsługuje operatory (map, filter, itp.) | Nie |
| Lenistwo | Lenistwo (wykonuje się przy subskrypcji) | Chciwość (wykonuje się od razu) |
Przykład 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('Wartość Observable:', value),
error: err => console.error('Błąd Observable:', err),
complete: () => console.log('Observable zakończony'),
});
Przykład Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise rozwiązana');
// reject('Promise odrzucona');
}, 1000);
});
myPromise
.then(value => console.log('Wartość Promise:', value))
.catch(error => console.error('Błąd Promise:', error));