Sobes.tech
Middle

Observable nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Observable, veri veya olay akışını temsil eden ve asenkron olabilen bir varlıktır. Gözlemlenebilir kaynaklar, belirli bir süre boyunca değerler yayabilir ve aboneler (Subscribers veya Observers), bu değerler ortaya çıktıkça tepki verebilir.

Ana kavramlar:

  • Observable (Gözlemlenebilir kaynak): Veri veya olay kaynağı.
  • Observer (Gözlemci): Observable'dan gelen olaylara tepki vermek için metodlara sahip nesne (next, error, complete).
    • next: Sıradaki değeri alma.
    • error: Bir hata oluşması.
    • complete: Veri akışının sona ermesi.
  • Subscription (Abonelik): Observable ile Observer arasındaki bağlantı. subscribe yöntemi çağrıldığında oluşturulur. Observer'un değerleri almasını ve abonelik yaşam döngüsünü yönetmesini sağlar (örneğin, bellek sızıntılarını önlemek için aboneliği iptal etme).
  • Operators (Operatörler): Observable akışlarını dönüştürmek, birleştirmek ve yönetmek için fonksiyonlar. Örnekler: map, filter, mergeMap, debounceTime.

Promise'lerden farklı olarak, Observable zaman içinde birden fazla değer yayabilir, bu da tek seferlik asenkron olay yerine veri akışlarını temsil eder.

RxJS'de kullanım örneği (popüler reaktif programlama kütüphanesi):

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// Dizi kullanarak Observable oluşturma
const source = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete(); // Akışı sona erdirir
});

// Abonelik ve operatör kullanımı
const subscription = source.pipe(
  map(value => value * 2) // map operatörü her değeri iki katına çıkarır
).subscribe({
  next: value => console.log(value), // Değerleri alır: 2, 4, 6
  error: err => console.error(err), // Hata işleme
  complete: () => console.log('Complete!') // Biter
});

Ana avantajlar:

  • Reaktif programlama: Asenkron veri akışlarının yönetimini kolaylaştırır.
  • Bileşenlenebilirlik: Operatörler kullanarak akışları kolayca birleştirme ve dönüştürme imkanı.
  • Yaşam döngüsü yönetimi: Abonelik, veri alımını açıkça yönetmeye ve bellek sızıntılarını önlemeye olanak tanır.