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ğerleripluck(): 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ğerleriswitchMap():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, 4take(): İ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.