RxJS Operatorler

29 Haz

RxJS API’nin önemli bir aktörü de Operatörlerdir. Operatörler, gözlemlenebilir nesneler için yardımcı işlemler olarak düşünülebilir. Her bir yardımcı işlem fonksiyonel programlama yöntemine göre fonksiyonlar halinde planlanmıştır. RxJS’de Operatörler 8 alt başlık halinde gruplandırılmıştır.

Bu başlıklar altında onlarca operatör bulunmaktadır. Buradan tüm operatörlere erişebilmek mümkündür. Bu yazıda popüler olanlardan bir kaçını aşağıdaki gibi kullanılmaktadır.

from()

Bir Observable nesne içerisine  array, promise veya iterable değerler eklemek için kullanılır.

concat()

Birden fazla Observable nesnesini bir dizi elemanı gibi sıraya dizer ve sırayla çalıştırır. Biri bitmeden diğerine geçmez. Bunu, biri bitmeden diğeri başlayamayan işlem sıralaması olarak düşünebiliriz.

Bu işlemin çıktısı aşağıdaki gibi olacaktır.

1, 2, 3, 4, 5, 6, 7, 8, 9

merge()

Concat işleminin benzeri olan bu operatörde, birden fazla Observable nesnesini bir dizi elemanı gibi sıraya dizer ancak işlemlerin sırayla yapılması beklenmez.

Bu işlemin çıktısı aşağıdaki gibi olacaktır.

 4, 5, 6, 7, 8, 9, 1, 2, 3

map()

Gözlenen verilerde değişiklik yapmak için kullanılabilir.

Bu işlemin çıktısı aşağıdaki gibi olacaktır.

 1, 4, 9

ajax()

Uzak sunucudan bir Ajax talebi yapmak için kullanılır.

Bu işlemin çıktısı sunucudan gelen JSON response olacaktır.

Sonuç

RxJS kütüphanesinde bulunan Operatorler konusu örnekler ile desteklenerek açıklanmıştır.

RxJS Subjects

28 Haz

RxJS’de Subjects gözlemlenebilir nesnenin (Observable) özel bir türüdür. Bunu, insanlarla dolu bir odadaki mikrofonla konuşan tek bir konuşmacı olarak düşünebilirsiniz. Burada:

  • Konuşmacının mesajları Subject,
  • Dinleyiciler Observer olarak düşünülebilir.

Konuşma esnasında mesajlar aynı anda birçok insana ulaşır. Bu olaya multicasting yani birden çok noktaya yayın yapmak denir. Dört farklı türde Subject vardır.

  1. Subject
  2. AsyncSubject
  3. BehaviorSubject
  4. ReplaySubject

Bu kavramları salondaki bir konuşmacının durumunu anlatan örnekler yaparak açıklayabiliriz.

Subject

Başlangıç değeri almaz ve tekrarlama davranışı göstermez.

Bu kod çalıştığında konsola iki defa, “merhaba sayın dinleyiciler.” mesajı yazılır.  Çünkü iki dinleyici bulunmaktadır. Salondaki bir konuşmacının her aklına geleni söylemesini buna örnek olarak verebiliriz.

AsyncSubject

İşlem tamamlandığında gözlemcilere en son mesaj değerini yayınlar.

Bu kod çalıştığında ekrana iki defa “merhaba arkadaşlar.” yazacaktır. Bunu salondaki bir konuşmacının aklında ilk cümlelerini düşünüp, ne söyleyeceğine karar verdiğinde konuşmasına benzetebiliriz. Yani konuşmacı, kullanıcılara en son aklında bulunan mesajı bildirmiş olur.

BehaviorSubject

Bir başlangıç değerine ihtiyaç duyar. Mevcuttaki en son değeri yeni abonelere yayınlar.

Burada salondaki konuşmacının sahneye çıkar çıkmaz selamlama yaptığı düşünülebilir. Konsola peş peşe iki defa “merhaba arkadaşlar.“, iki defa “nasılsınız“, iki defa da “konumuz küresel ısınma.” yazacaktır.

ReplaySubject

Belirtilen sayıda verilen son değeri, yeni abonelere tekrar yayınlar.

Burada salonda konuşmacı konuşurken bir dinleyici vardır. “selamlar” ve “nasılsınız” şeklinde iki mesaj yayınlanmıştır ve salondaki mevcut dinleyici tarafından bu mesajlar alınmıştır. Ancak ReplaySubject ile salona gelen sonraki dinleyicilere de önceki mesajlar tekrar gönderilir.

Sonuç

RxJS kütüphanesinde bulunan özel Observable türleri örnek uygulamalarla desteklenerek incelenmiştir.

Bir sonraki yazıda, RxJS kütüphanesindeki Operatörler incelenecektir.