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

مقدمة إلى الـ Subjects (البث المتعدد)

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

58. مقدمة إلى الـ Subjects (البث المتعدد)

الـ Observables القياسية هي Unicast (أو 'باردة'): يحصل كل مشترك على تنفيذه المستقل لمنطق Observable (على سبيل المثال، كل مشترك HTTP يشغل طلباً جديداً).

Subjects هي نوع خاص من Observable وهي Multicast (أو 'ساخنة'): تسمح لعدة مراقبين بالاشتراك في نفس التنفيذ. Subject هو كلاهما: مراقب (يمكنه تلقي القيم عبر next()) و Observable (يمكن الاشتراك فيه).

Subject الأساسي (Subject<T>)

Subject الأساسي هو تدفق لا يحمل حالة. يطلق قيماً فقط للمشتركين الذين يستمعون حالياً بعد إطلاق القيمة.

حالة الاستخدام: مُطلقو الأحداث في الخدمات لتواصل المكونات غير ذات الصلة (يحل محل EventEmitter الخاص بـ Angular في الخدمات).

typescript import { Subject } from 'rxjs';

const statusUpdate$ = new Subject();

// يبدأ المشترك A في الاستماع statusUpdate$.subscribe(message => console.log('Sub A:', message));

// يطلق التدفق قيمة statusUpdate$.next('System Initialized'); // الإخراج: Sub A: System Initialized

// يبدأ المشترك B في الاستماع لاحقاً statusUpdate$.subscribe(message => console.log('Sub B:', message));

statusUpdate$.next('User logged in'); /* الإخراج: Sub A: User logged in Sub B: User logged in */

statusUpdate$.complete(); // ينهي التدفق لجميع المشتركين

الأهمية: إذا كان المشترك B قد اشترك بعد إطلاق 'System Initialized'، لكان قد فاتته تلك الرسالة. يقدم الدرس التالي Subjects التي تخزن الحالة.