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));