Sobes.tech
Middle

Ի՞նչ է observable-ը։

sobes.tech AI

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

Observable-ը միավոր է, որը ներկայացնում է տվյալների կամ իրադարձությունների հոսք, որը կարող է լինել ասինխրոն: Դիտվող աղբյուրները կարող են արտանետել արժեքներ որոշ ժամանակահատվածում, իսկ գրանցողները (Subscribers կամ Observers) կարող են արձագանքել այդ արժեքներին ըստ դրանց հայտնվելու ժամանակ:

Հիմնական գաղափարներ:

  • Observable (Դիտվող աղբյուր): Տվյալների կամ իրադարձությունների աղբյուր:
  • Observer (Դիտող): Օբյեկտ, որը ունի մեթոդներ next, error, complete՝ արձագանքելու համար Observable-ից եկող իրադարձություններին:
    • next: Հաջորդ արժեքի ստացում:
    • error: Գործողության սխալ:
    • complete: Տվյալների հոսքի ավարտ:
  • Subscription (Գրանցում): Կապը Observable և Observer միջև: Գրանցումը ստեղծվում է subscribe մեթոդը կանչելու ժամանակ:
  • Operators (Օպերատորներ): Ֆունկցիաներ, որոնք փոխում են, համակցում և կառավարում Observable հոսքերը: Օրինակներ՝ map, filter, mergeMap, debounceTime:

Observable-ը տարբեր է Promises-ից, քանի որ այն կարող է արտանետել բազմաթիվ արժեքներ ժամանակի ընթացքում, ներկայացնելով տվյալների հոսք, ոչ թե մեկանգամյա ասինխրոն իրադարձություն:

Օրինակ RxJS-ում (հայտնի ռեակտիվ ծրագրավորման գրադարան):

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// Observable ստեղծում զանգվածից
const source = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete(); // Հոսքի ավարտ
});

// Գրանցում և օպերատորի օգտագործում
const subscription = source.pipe(
  map(value => value * 2) // `map` օպերատորը կրկնապատկում է յուրաքանչյուր արժեք
).subscribe({
  next: value => console.log(value), // Արժեքների ստացում՝ 2, 4, 6
  error: err => console.error(err), // Սխալների մշակում
  complete: () => console.log('Complete!') // Հոսքի ավարտ
});

Հիմնական առավելությունները՝

  • Ռեակտիվ ծրագրավորում՝ հեշտ կառավարում ասինխրոն տվյալների հոսքերը:
  • Կոմպոզիցիա՝ հեշտ համակցել և փոխարկել հոսքերը օպերատորների միջոցով:
  • Հոսքի կյանքի ցիկլի կառավարում՝ գրանցումը թույլ է տալիս հստակ կառավարել տվյալների ստացումը և կանխել հիշողության արտահոսքը։