Middle
Jakie są podobieństwa i różnice między Observable a Promise?
sobes.tech AI
Odpowiedź od AI
Podobieństwa:
- Reprezentują operacje asynchroniczne.
- Używają funkcji do obsługi wyniku (rozwiązany) i błędu (odrzucony).
Różnice:
| Cecha | Promise | Observable |
|---|---|---|
| Wartość/zdarzenie | Zwraca jedną wartość lub błąd. | Zwraca 0 lub więcej wartości z czasem. |
| Anulowanie | Nie można anulować po uruchomieniu. | Można anulować subskrypcję. |
| Wielu subskrybentów | Jednorazowe wykonanie niezależnie od subskrybentów. | Nowa subskrypcja zwykle prowadzi do nowego wykonania (zimny Observable). |
| Lenistwo | Zaczyna się wykonywać od razu po utworzeniu. | Zaczyna się wykonywać dopiero po subskrypcji. |
| Operatory | Nie ma wbudowanych operatorów do transformacji. | Posiada bogaty zestaw operatorów (map, filter, merge itp.). |
| Przykłady użycia | Żądania HTTP, odłożone działania. | Wydarzenia UI, połączenia WebSocket, interwały. |
Przykład Observable:
import { Observable } from 'rxjs';
const observable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
setTimeout(() => {
subscriber.next(3);
subscriber.complete();
}, 1000);
});
Przykład Promise:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dane odebrane');
}, 1000);
});