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