Sobes.tech
Middle

Akışlarla çalışmak için hangi operatörleri biliyorsunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Veri akışlarıyla çalışmak için operatörler, özellikle asenkron programlama ve reaktif kütüphaneler (RxJS gibi) bağlamında birkaç kategoriye ayrılabilir.

Oluşturma Operatörleri (Creation Operators): Yeni bir veri akışı oluşturmak için kullanılır.

  • of(): Sabit bir değer kümesini yayımlayan bir akış oluşturur.
    // RxJS'den
    import { of } from 'rxjs';
    
    const source = of(1, 2, 3); // 1, 2, 3 değerlerini yayımlayan akış
    
  • from(): Çeşitli veri kaynaklarını (Promise, Iterable, ArrayLike) akışa dönüştürür.
    // RxJS'den
    import { from } from 'rxjs';
    
    const source = from([10, 20, 30]); // Bir diziden akış
    
  • interval(): Belirli zaman aralıklarıyla ardışık sayıları yayımlayan bir akış oluşturur.
    // RxJS'den
    import { interval } from 'rxjs';
    
    const source = interval(1000); // Her saniye sayı yayımlayan akış
    
  • timer(): Belirli bir süre sonra bir değer yayımlayan, isteğe bağlı olarak arka arkaya değerler de yayımlayabilir.
  • fromEvent(): DOM olaylarından veya EventEmitter'dan akış oluşturur.

Dönüştürme Operatörleri (Transformation Operators): Akışın yayımladığı değerleri değiştirir.

  • map(): Her değeri belirli bir fonksiyonla dönüştürür.
    // RxJS'den
    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 değerleri
    
  • pluck(): Her nesneden bir özellik çıkarır.
  • scan(): Akıştaki her değer üzerinde birikimli bir fonksiyon uygular ve ara sonuçları yayımlar.
  • mergeMap() / flatMap(): Her orijinal akış değerini yeni bir akışa dönüştürür ve bunları birleştirir. Asenkron işlemler yapmaya olanak tanır.
    // RxJS'den
    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' değerleri
    
  • switchMap(): mergeMap'e benzer, ancak yeni bir değer yayımlandığında önceki iç akışın çalışmasını iptal eder. Otomatik tamamlama veya iptal edilen istekler için kullanışlıdır.
  • concatMap(): mergeMap'e benzer, ancak iç akışların sıralı şekilde çalışmasını sağlar.

Filtreleme Operatörleri (Filtering Operators): Yayımlanan değerleri seçerek geçirir.

  • filter(): Belirli bir koşulu sağlayan değerleri geçirir.
    // RxJS'den
    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 değeri alır.
  • takeUntil(): Başka bir akış değer yayımlayana kadar değerleri alır.
  • skip(): İlk N değeri atlar.
  • debounceTime(): Akış belirli bir süre boyunca inaktif kalana kadar değer yayımlamaz. Çok sık yapılan işlemleri engellemek için kullanılır.
  • distinctUntilChanged(): Önceki değerden farklı olanları yayımlar.

Kombinasyon Operatörleri (Combination Operators): Birden fazla akışı tek bir akışta birleştirir.

  • combineLatest(): Birden fazla akışın en son değerlerini birleştirir ve herhangi biri değiştiğinde yeni bir dizi yayımlar.
  • zip(): Akışların değerlerini indekslerine göre eşleştirir.
  • merge(): Akışları birleştirir ve değerleri geldiği gibi yayımlar.
  • concat(): Akışları ardışık olarak çalıştırır.

Hata İşleme Operatörleri (Error Handling Operators): Hatalar karşısında davranışı belirler.

  • catchError(): Hata yakalar ve akışa devam eder veya yerine başka bir akış koyar.
    // RxJS'den
    import { throwError } from 'rxjs';
    import { catchError, of } from 'rxjs/operators';
    
    const source = throwError(() => new Error('Bir şeyler ters gitti'));
    const result = source.pipe(catchError(err => of('Hata yakalandı'))); // 'Hata yakalandı'
    
  • retry(): Hata oluşursa N kez tekrar denemeye çalışır.

Tamamlama Operatörleri (Completion Operators): Akışın tamamlandığını belirler.

  • finalize(): Tamamlandığında veya iptal edildiğinde belirli bir işlemi gerçekleştirir.
  • tap(): Yan etkiler yapar (örneğin, loglama) ve değerleri değiştirmez.

Bu liste tam değil, ancak frontend geliştirmede sıkça kullanılan önemli operatörleri içermektedir.