Sobes.tech
Middle

Ի՞նչ են Observable և Promise-ի նմանությունները և տարբերությունները։

sobes.tech AI

Պատասխան AI-ից

Observable-ը տվյալների հոսք է, որը կարող է ժամանակի ընթացքում արտանետել մի քանի արժեք։ Այն ռեակցիոն է և աջակցում է բաժանորդագրման չեղարկմանը։ Promise-ը միշտ միայն մեկ անգամ է լուծվում կամ մերժվում և միանգամյա է։ Observable-ը աջակցում է տվյալների փոխակերպման օպերատորներին, Promise-ը՝ ոչ։

Գծանշում Observable Promise
Արժեքների քանակը Կարող է արտանետել մի քանի արժեք Միշտ մեկ արժեք (resolve/reject)
Չեղարկում Աջակցում է բաժանորդագրման չեղարկմանը Չի աջակցում
Ռեակցիոնություն Ռեակցիոն է Չի
Օպերատորներ Աջակցում է օպերատորներին (map, filter և այլն) Չի
Լենվություն Լենվ (կատարվում է բաժանորդագրման ժամանակ) Ամբողջական (կատարվում է անմիջապես)

Օրինակ՝ 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('Observable արժեք:', value),
  error: err => console.error('Observable սխալ:', err),
  complete: () => console.log('Observable ավարտվեց'),
});

Օրինակ՝ Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise լուծվեց');
    // reject('Promise մերժվեց');
  }, 1000);
});

myPromise
  .then(value => console.log('Promise արժեք:', value))
  .catch(error => console.error('Promise սխալ:', error));