سؤال

شاهدت الفيديو وأنا أعلم أن المبادئ العامة - يحدث الساخنة حتى عندما لا يتم الاشتراك في أي شخص ، يحدث البرد "عند الطلب". أيضًا ، يقوم Publish () بتحويل البرد إلى الساخنة و effer () يحول الساخنة إلى البرد.

لكن لا يزال ، أشعر أنني أفتقد التفاصيل. إليك بعض الأسئلة التي أرغب في الإجابة عليها:

  • هل يمكنك إعطاء تعريف شامل لهذه المصطلحات؟
  • هل من المنطقي من أي وقت مضى استدعاء النشر على الساخنة التي يمكن ملاحظتها أو تأجيل البرد؟
  • ما هي جوانب التحويلات الساخنة/الباردة - هل تفقد الرسائل ، على سبيل المثال؟
  • هل هناك اختلافات بين التعاريف الساخنة والباردة لصالح iobservable و ienumerform؟
  • ما هي المبادئ العامة التي يجب أن تأخذها في الاعتبار عند البرمجة للبرد أو الساخنة؟
  • أي نصائح أخرى على الملاحظات الساخنة/الباردة؟
هل كانت مفيدة؟

المحلول

آمل أن يساعد هذا.

هل يمكنك إعطاء تعريف شامل لهذه المصطلحات؟

انظر منشور مدونتي على: http://leecampbell.blogspot.com/2010/08/rx-bart-7-hot-and-cold-observables.html

هل من المنطقي من أي وقت مضى استدعاء النشر على الساخنة التي يمكن ملاحظتها أو تأجيل البرد؟

لا ، لا يمكنني التفكير فيه.

ما هي جوانب التحويلات الساخنة/الباردة - هل تفقد الرسائل ، على سبيل المثال؟

من الممكن "فقدان" الرسائل عندما تكون الملاحظة ساخنة ، حيث تحدث "الأحداث" بغض النظر عن المشتركين.

هل هناك اختلافات بين التعاريف الساخنة والباردة لصالح iobservable و ienumerform؟

أنا لا أفهم حقًا السؤال. آمل أن يساعد هذا القياس. أود أن أقارن الساخنة التي يمكن ملاحظتها بتقييمها بفارغ الصبر. أي قائمة أو صفيف يتم تقييمها بفارغ الصبر وتم ملؤوها حتى لو لم يكن أحد يطبق عليها. يمكن تقييم بيان العائد الذي يحصل على قيم من ملف أو قاعدة بيانات بتكاسل مع الكلمة الرئيسية العائد. على الرغم من أن Lazy يمكن أن يكون جيدًا ، إلا أنه سيتم إعادة تقييمه افتراضيًا ، إذا كان العداد الثاني يركض عليه. مقارنة هذه مع الملاحظات ، قد يكون الحدث الساخن حدثًا (نقرة زر) أو تغذية لدرجات الحرارة ؛ ستحدث هذه الأحداث بغض النظر عن الاشتراك وسيتم مشاركتها أيضًا إذا تم إجراء اشتراكات متعددة لنفس الملاحظة. يمكن ملاحظته. سيبدأ فقط في إنتاج القيم عند إجراء اشتراك. إذا كانت الاشتراكات المتعددة كما تم إجراؤها ، فسيتم إعادة تقييم التسلسل وسيحدث "الأحداث" في أوقات منفصلة (اعتمادًا على الوقت بين الاشتراكات).

ما هي المبادئ العامة التي يجب أن تأخذها في الاعتبار عند البرمجة للبرد أو الساخنة؟

الرجوع إلى الرابط في النقطة الأولى. أود أن أوصي أيضًا بالبحث في publsh المستخدمة مع refcount. يتيح لك ذلك أن يكون لديك القدرة على الحصول على دلالات التقييم البطيئة من الملاحظات الباردة ولكن تبادل الأحداث التي تحصل عليها الملاحظات الساخنة.

أي نصائح أخرى على الملاحظات الساخنة/الباردة؟

احصل على يديك متسخًا واعمل معهم. بمجرد أن تقرأ عنها لأكثر من 30 دقيقة ، يكون الوقت الذي يقضيه الترميز معهم أكثر إنتاجية لك أكثر من قراءة المزيد :)

نصائح أخرى

الملاحظات الساخنة هي تلك التي تدفع حتى عندما لا تكون مشتركًا في الملاحظة. مثل تحركات الماوس ، أو علامات الموقت أو أي شيء من هذا القبيل. الملاحظات الباردة هي تلك التي تبدأ في الدفع فقط عند الاشتراك ، وتبدأ من جديد إذا اشتركت مرة أخرى.

لا أتظاهر بإعطاء إجابة شاملة ، أود أن ألخص في أبسط ما تعلمته منذ وقت هذا السؤال.

الساخنة يمكن ملاحظتها هو تطابق دقيق للحدث. في الأحداث ، عادة ما يتم تغذية القيم في المعالج حتى لو لم يستمع المشتركون. يتلقى جميع المشتركين نفس مجموعة القيم. بسبب اتباع نمط "الحدث" ، فإن Hot Observables أسهل للفهم من البرد.

بارد يمكن ملاحظته يشبه أيضًا حدثًا ، ولكن مع وجود تطور - لا يعد حدث Cold Observable خاصية على مثيل مشترك ، فهو خاصية على كائن يتم إنتاجه من مصنع في كل مرة يشترك فيها شخص ما. بالإضافة إلى ذلك ، يبدأ الاشتراك في إنتاج القيم. بسبب ما سبق ، يتم عزل العديد من المشتركين ويتلقى كل منهم مجموعة من القيم الخاصة به.

الأخطاء الأكثر شيوعًا التي يرتكبها مبتدئون RX هو إنشاء بارد قابل للملاحظة (جيدًا ، معتقدين أنهم يخلقون باردًا يمكن ملاحظته) باستخدام بعض متغيرات الحالة ضمن دالة (إجمالي المتراكم FE) وعدم لفه في عبارة .defer (). نتيجة لذلك ، يشارك العديد من المشتركين هذه المتغيرات ويسببون آثارًا جانبية بينهما.

يمكن ملاحظته

من الناحية المفاهيمية ، يمكن ملاحظته ببساطة غلاف حول بعض البيانات أو مصدر الحدث ، مما يوفر بعض الواجهة المريحة لمعالجة المصدر على أنه دفق البيانات الذي يقوم بتحديث قيمه في الوقت الفعلي.

بارد يمكن ملاحظته

في الإصدار "البارد" ، لا يكون المصدر نشطًا ويمكن مقارنته بالمخطط أو الفئات أو النماذج الأولية. وبالتالي فإن الملاحظة لا تنتج أي شيء. مثل دفق معلق أو معلق. هذا يجعلها قيمة نقية يمكنك نقلها بأمان إلى وظيفة نقية. مثال جيد هو عداد معلق يبدأ دائمًا بـ 1 عند تنشيطه.

"الاشتراك" في "البرد القابل للملاحظة" يعني شيئين: إنشاء (أو صياغة) مثيل دفق البيانات النشط وتوصيل المشترك. الجزء الأول يشبه إنشاء كائنات من فئة. الجزء الثاني هو الاشتراك الفعلي وحد ذاته ، لا علاقة له بالجزء الأول.

الساخنة يمكن ملاحظتها

"الساخنة القابلة للملاحظة" هي بالفعل مثيل يعمل. مثل كائن تم إنشاؤه من النموذج الأولي وجاهز للاستخدام. والاشتراك ينطوي فقط على مراقب فعلي. لا يلزم جزء تنشيط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top