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ınfrom(): 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ıninterval(): 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ıntimer(): 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əripluck(): 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əriswitchMap():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, 4take(): İ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ınretry(): 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.