Middle
Observable nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Observable — bu məlumatlar və ya hadisələr axını təmsil edən və asinxron ola bilən varlıqdır. Gözlənilən mənbələr müəyyən bir müddət ərzində dəyərlər yayə bilər və abunəçilər (Subscribers və ya Observers) bu dəyərlərə onların yaranması ilə reaksiya verə bilər.
Əsas anlayışlar:
- Observable (Gözlənilən mənbə): Məlumat və ya hadisə mənbəyi.
- Observer (Gözləyici): Observable-dan gələn hadisələrə reaksiya vermək üçün metodlara malik obyekt (
next,error,complete).next: Növbəti dəyəri almaq.error: Xəta baş verir.complete: Məlumat axını başa çatır.
- Subscription (Abunəlik): Observable və Observer arasında əlaqə.
subscribemetodunu çağırmaqla yaradılır. Bu, Observer-ə dəyərlər almağa və abunəliyin həyat dövrünü idarə etməyə imkan verir (məsələn, yaddaş sızıntılarını önləmək üçün abunəliyi ləğv etmək). - Operators (Operatorlar): Observable axınlarını çevirmək, birləşdirmək və idarə etmək üçün funksiyalar. Nümunələr:
map,filter,mergeMap,debounceTime.
Promise-lərdən fərqli olaraq, Observable çoxsaylı dəyərləri zamanla yaymağa qadirdir, bu da məlumat axınlarını təmsil edir, tək asinxron hadisə deyil.
RxJS-də istifadə nümunəsi (populyar reaktiv proqramlaşdırma kitabxanası):
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
// Array-dən Observable yaratmaq
const source = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete(); // Axını başa çatdırır
});
// Abunə olmaq və operatoru istifadə etmək
const subscription = source.pipe(
map(value => value * 2) // map operatoru hər dəyəri iki qat artırır
).subscribe({
next: value => console.log(value), // Dəyərləri alır: 2, 4, 6
error: err => console.error(err), // Xətaları idarə edir
complete: () => console.log('Complete!') // Bitir
});
Əsas üstünlüklər:
- Reaktiv proqramlaşdırma: asinxron məlumat axınlarının rahat idarə olunması.
- Komponentləşdirmə: operatorlar vasitəsilə axınların asanlıqla birləşdirilməsi və çevrilməsi.
- Həyat dövrünün idarə olunması: abunəlik məlumatların alınmasını açıq şəkildə idarə etməyə və yaddaş sızıntılarını önləməyə imkan verir.