Sobes.tech
Middle

Axınlarla işləmək üçün hansı operatorları bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Məlumat axınları ilə işləmək üçün operatorlar, xüsusən asinxron proqramlaşdırma və reaktiv kitabxanalar (məsələn, RxJS) kontekstində vacibdir və bir neçə kateqoriyaya bölünə bilər.

Yaradıcılıq operatorları (Creation Operators): Yeni məlumat axını yaratmaq üçün istifadə olunur.

  • of(): Sabit dəyər dəstəsini çıxaran axın yaradır.
    // RxJS-dən
    import { of } from 'rxjs';
    
    const source = of(1, 2, 3); // 1, 2, 3 çıxaran axın
    
  • from(): Müxtəlif məlumat mənbələrini (Promise, Iterable, ArrayLike) axına çevirir.
    // RxJS-dən
    import { from } from 'rxjs';
    
    const source = from([10, 20, 30]); // massivdən axın
    
  • interval(): Müəyyən vaxt intervalında ardıcıl nömrələri çıxaran axın yaradır.
    // RxJS-dən
    import { interval } from 'rxjs';
    
    const source = interval(1000); // Hər saniyə nömrə çıxaran axın
    
  • timer(): Müəyyən vaxtdan sonra tək dəyər çıxaran və ya interval ilə davam edən axın.
  • fromEvent(): DOM hadisələrindən və ya EventEmitter-dən axın yaradır.

Transformasiya operatorları (Transformation Operators): Axın tərəfindən çıxarılan dəyərləri dəyişdirir.

  • map(): Hər bir dəyəri funksiyaya tətbiq edərək dəyişdirir.
    // RxJS-dən
    import { of } from 'rxjs';
    import { map } from 'rxjs/operators';
    
    const source = of(1, 2, 3);
    const result = source.pipe(map(x => x * 2)); // 2, 4, 6 dəyərləri
    
  • pluck(): Hər bir obyektin xassəsini çıxarır.
  • scan(): Toplama funksiyasını tətbiq edir və aralıq nəticələri çıxarır.
  • mergeMap() / flatMap(): Hər bir dəyəri yeni axına proyeksiya edir və onları birləşdirir. Asinxron əməliyyatlar üçün uyğundur.
    // RxJS-dən
    import { of } from 'rxjs';
    import { mergeMap } from 'rxjs/operators';
    
    const source = of(1, 2);
    const result = source.pipe(mergeMap(val => of(val + 'a', val + 'b'))); // '1a', '1b', '2a', '2b' dəyərləri
    
  • switchMap(): mergeMap-ə bənzəyir, amma yeni dəyər çıxanda əvvəlki daxili axını ləğv edir.
  • concatMap(): Daxili axınların ardıcıl icrasını təmin edir.

Filtrləmə operatorları (Filtering Operators): Seçilmiş dəyərləri keçirir.

  • filter(): Şərti ödəyən dəyərləri keçir.
    // RxJS-dən
    import { of } from 'rxjs';
    import { filter } from 'rxjs/operators';
    
    const source = of(1, 2, 3, 4);
    const result = source.pipe(filter(x => x % 2 === 0)); // 2, 4
    
  • take(): İlk N dəyəri çıxarır.
  • takeUntil(): Digər axın dəyər çıxarana qədər davam edir.
  • skip(): İlk N dəyəri atlayır.
  • debounceTime(): Vəziyyət dəyişmədən əvvəlki dəyəri çıxarır.
  • distinctUntilChanged(): Yalnız əvvəlkindən fərqli dəyərləri çıxarır.

Kombinasiyalı operatorlar (Combination Operators): Bir neçə axını birləşdirir.

  • combineLatest(): Bütün axınların ən son dəyərlərini hər dəyişiklikdə çıxarır.
  • zip(): Dəyərləri indeksə görə birləşdirir.
  • merge(): Axınları birləşdirir və dəyərləri ardıcıllıqla çıxarır.
  • concat(): Axınları ardıcıl icra edir.

Xəta idarəetmə operatorları (Error Handling Operators): Xətaları idarə edir.

  • catchError(): Xətanı tutaraq, axını davam etdirə və ya dəyişə bilər.
    // RxJS-dən
    import { throwError } from 'rxjs';
    import { catchError, of } from 'rxjs/operators';
    
    const source = throwError(() => new Error('Nəsə səhv oldu'));
    const result = source.pipe(catchError(err => of('Xəta tutuldu'))); // 'Xəta tutuldu' dəyəri ilə axın
    
  • retry(): Xətada N dəfə yenidən cəhd edir.

Yekunlaşdırıcı operatorlar (Completion Operators): Axarın tamamlanmasını idarə edir.

  • finalize(): Tamamlama və ya ləğv zamanı fəaliyyət göstərir.
  • tap(): Yan təsirlər üçün istifadə olunur, dəyərləri dəyişdirmədən.

Bu operatorlar, xüsusən frontend inkişafında, reaktiv yanaşma ilə işləyərkən çox istifadə olunur.