53. إنشاء الـ Observables والاشتراك بها
هناك عدة دوال مصنع (factory functions) في RxJS تُستخدم لإنشاء Observables بسهولة.
1. إنشاء Observables من الصفر
استخدم new Observable() عند الربط بالمصادر غير المتزامنة (مثل setInterval أو WebSockets) التي لا تُرجع Observables بشكل طبيعي.
typescript import { Observable } from 'rxjs';
const mouseMove$ = new Observable
// إرجاع دالة الإلغاء للتنظيف 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.