51. مقدمة في البرمجة التفاعلية (Reactive Programming) و RxJS
RxJS (Reactive Extensions for JavaScript) هي مكتبة لإنشاء برامج غير متزامنة وقائمة على الأحداث باستخدام Observables. إنها أساسية لكيفية تعامل Angular مع العمليات غير المتزامنة (HTTP، التوجيه، الأحداث).
ما هي البرمجة التفاعلية؟
البرمجة التفاعلية تدور حول التعامل مع تدفقات البيانات غير المتزامنة. كل شيء هو تدفق: نقرات المستخدم، استجابات الخادم، أحداث المؤقت، تغييرات الخصائص.
تشبيه: فكر في نمط المراقب (Observer pattern) الممتد للوقت.
- Observable: مُنتِج البيانات (التدفق).
- Observer: المستهلك الذي يحدد المُعالجين للقيم المُستلَمة (
next)، والأخطاء (error)، والإكمال (complete). - Subscription: تنفيذ Observable، وربط Observable بـ Observer.
لماذا RxJS في Angular؟
- الاتساق (Uniformity): يوفر طريقة واحدة ومتسقة للتعامل مع جميع العمليات غير المتزامنة (HTTP، أحداث واجهة المستخدم، المؤقتات، التوجيه).
- الثبات (Immutability): لا تغير العمليات (Operators) التدفق نفسه، بل تُرجع تدفقاً متحولاً جديداً.
- تكوين قوي (Powerful Composition): يوفر RxJS مئات من العوامل (
map،filter،merge) لتكوين منطق غير متزامن معقد بسهولة.
ملخص المفاهيم الرئيسية
| المفهوم | الوصف |
|---|---|
| Observable | مصدر ينبعث منه قيم متعددة بمرور الوقت. |
| Observer | كائن بأساليب next و error و complete. |
| Subscription | نتيجة استدعاء subscribe(). يبدأ التنفيذ ويسمح بالتنظيف. |
| Operators | دوال نقية تحول Observable واحداً إلى آخر (على سبيل المثال، filter). |
في الدروس التالية، سوف نستكشف عملياً كيف تختلف Observables عن Promises وكيفية استخدام العوامل الرئيسية.