العودة إلى الدورة

إنشاء الـ Observables والاشتراك بها

مطور Angular الشامل: من الصفر إلى الاحتراف

53. إنشاء الـ Observables والاشتراك بها

هناك عدة دوال مصنع (factory functions) في RxJS تُستخدم لإنشاء Observables بسهولة.

1. إنشاء Observables من الصفر

استخدم new Observable() عند الربط بالمصادر غير المتزامنة (مثل setInterval أو WebSockets) التي لا تُرجع Observables بشكل طبيعي.

typescript import { Observable } from 'rxjs';

const mouseMove$ = new Observable(observer => { const handler = (event: MouseEvent) => observer.next(event); document.addEventListener('mousemove', handler);

// إرجاع دالة الإلغاء للتنظيف return () => document.removeEventListener('mousemove', handler); });

const subscription = mouseMove$.subscribe(event => { console.log(Mouse at: ${event.clientX}, ${event.clientY}); });

// لإيقاف الاستماع: // subscription.unsubscribe();

2. دوال المصنع للمصادر البسيطة

المصنعالوصف
of()يُطلق تسلسلاً ثابتاً من القيم ثم يكتمل.
from()يحول مصفوفة أو Promise أو كائناً قابلاً للتكرار إلى Observable.
interval()يُطلق أرقاماً متسلسلة بشكل دوري.
timer()يُطلق قيمة واحدة بعد تأخير محدد، ثم يكرر اختيارياً.

typescript import { of, from } from 'rxjs';

of(10, 20, 30).subscribe(val => console.log('of:', val)); // يطلق 10، 20، 30، ثم يكتمل

from(['A', 'B', 'C']).subscribe(val => console.log('from:', val)); // يطلق A، B، C، ثم يكتمل

// interval(1000).subscribe(count => console.log(count)); // يطلق 0، 1، 2، ... كل ثانية (لا يكتمل أبداً)

3. كائن الاشتراك (Subscription)

عندما نستدعي subscribe()، نحصل على كائن Subscription. احتفظ دائماً بسجل للاشتراكات لـ Observables طويلة الأمد واستدعِ unsubscribe() في ngOnDestroy.