سؤال

هل يمكن لأي شخص أن يشرح الاختلافات بين الملاحظة والقابلة للملاحظة؟ وثائق امتدادات RX قليلة للغاية وأنا لا أفهم في الحالات التي يكون من المفيد ConnectableObservable.

يتم استخدام هذه الفئة في طرق إعادة/تقليم.

هل كانت مفيدة؟

المحلول

اجابة قصيرة:

IConnectableObservable يمثل أ ريثما يمكن ملاحظتها الساخنة التي يمكن مشاركتها مع العديد من المشتركين. الدعوة IConnectableObservable.Connect() يسبب التغيير ساخنًا (يشترك في المصدر البارد الذي يمكن ملاحظته)

اجابة طويلة:

أ بارد يمكن ملاحظته (مثل Observable.Range) إعادة التسلسل لكل مشترك. إنها تشبه ساعة توقيت ، حيث يتم إعطاء كل مشترك ساعة توقيت خاصة به. يبدأ المشترك ساعة توقيت عن طريق الاشتراك ، وتتوقف ساعة التوقيت (وإعادة تعيين) بمجرد توقف المراقب.

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

IObservable.Publish يحول البرد الملاحظ إلى حار يمكن ملاحظته ، لكنه يعيد IConnectableObservable. يمكّن ذلك المشتركين من الاشتراك في ساعة توقيت (واحدة) قبل بدء تشغيله. الدعوة IConnectableObservable.Connect() تبدأ ساعة التوقيت. التخلص من Connect() قيمة الإرجاع توقف ساعة التوقيت.

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

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