Middle
Kokios yra panašumai ir skirtumai tarp Observable ir Promise?
sobes.tech AI
Atsakymas iš AI
Panašumai:
- Atstovauja asinchronines operacijas.
- Naudoja funkcijas rezultatui (išspręstam) ir klaidai (atmestai) apdoroti.
Skirtumai:
| Savybė | Promise | Observable |
|---|---|---|
| Reikšmė/renginys | Grąžina vieną reikšmę arba klaidą. | Grąžina 0 arba daugiau reikšmių laikui bėgant. |
| Atšaukimas | Negalima atšaukti po paleidimo. | Gali būti atšauktas prenumeruojant. |
| Daugybė prenumeratorių | Vienkartinis vykdymas nepriklausomai nuo prenumeratorių. | Nauja prenumerata dažnai sukelia naują vykdymą (šaltas Observable). |
| Lėtumas | Pradedama vykdyti iškart po sukūrimo. | Pradedama vykdyti tik po prenumeratos. |
| Operatoriai | Neturi įmontuotų operatorių transformacijai. | Turi turtingą operatorių rinkinį (map, filter, merge ir kt.). |
| Naudojimo pavyzdžiai | HTTP užklausos, atidėtos veiksmai. | UI įvykiai, WebSocket ryšiai, intervalai. |
Observable pavyzdys:
import { Observable } from 'rxjs';
const observable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
setTimeout(() => {
subscriber.next(3);
subscriber.complete();
}, 1000);
});
Promise pavyzdys:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Duomenys gauti');
}, 1000);
});