Sobes.tech
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);
});