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