Sobes.tech
Middle

Kādi ir līdzības un atšķirības starp Observable un Promise?

sobes.tech AI

Atbilde no AI

Observable ir ir ir ir duomenų srautas, kuris gali skleisti daugybę reikšmių laikui bėgant. Jis yra reaktyvus ir palaiko prenumeratos atšaukimą. Promise visada išsprendžiamas arba atmetamas tik kartą ir yra vienkartinis. Observable palaiko operatorius duomenų transformavimui, Promise – ne.

Savybė Observable Promise
Reikšmių skaičius Gali skleisti daugybę reikšmių Visada viena reikšmė (sprendimas/atmetimas)
Atšaukimas Palaiko prenumeratos atšaukimą Nepalaiko atšaukimo
Reaktyvumas Reaktyvus Ne
Operatoriai Palaiko operatorius (map, filter ir kt.) Ne
Vėlyvumas Vėlyvas (vykdomas prenumeratos metu) Skubus (vykdomas iš karto)

Pavyzdys su Observable:

import { Observable } from 'rxjs';

const manoObservable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  setTimeout(() => {
    subscriber.next(3);
    subscriber.complete();
  }, 1000);
});

manoObservable.subscribe({
  next: value => console.log('Observable reikšmė:', value),
  error: err => console.error('Observable klaida:', err),
  complete: () => console.log('Observable pabaiga'),
});

Pavyzdys su Promise:

const manoPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise išspręsta');
    // reject('Promise atmesta');
  }, 1000);
});

manoPromise
  .then(value => console.log('Promise reikšmė:', value))
  .catch(error => console.error('Promise klaida:', error));