Sobes.tech
Middle

Millised on Observable ja Promise sarnasused ja erinevused?

sobes.tech AI

Vastus AI-lt

Observable on andmevoog, mis suudab aja jooksul edastada palju väärtusi. See on reaktiivne ja toetab tellimuse tühistamist. Promise lahendatakse või lükatakse tagasi ainult üks kord ning see on ühekordne. Observable toetab andmete teisendamise operaatoreid, Promise mitte.

Omadus Observable Promise
Väärtuste arv Võib edastada palju väärtusi Alati üks väärtus (lahendamine/tühistamine)
Tühistamine Toetab tellimuse tühistamist Ei toeta tühistamist
Reaktiivsus Reaktiivne Mitte
Operatsioonid Toetab operaatoreid (map, filter jms) Ei
Viivitus Viivitatud (täidetakse tellimisel) Eager (täidetakse kohe)

Näide Observable:

import { Observable } from 'rxjs';

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

minuObservable.subscribe({
  next: value => console.log('Observable väärtus:', value),
  error: err => console.error('Observable viga:', err),
  complete: () => console.log('Observable lõpetatud'),
});

Näide Promise:

const minuPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise lahendatud');
    // reject('Promise tagasi lükatud');
  }, 1000);
});

minuPromise
  .then(value => console.log('Promise väärtus:', value))
  .catch(error => console.error('Promise viga:', error));