2015-06-07 6 views
7

observable.publish().refCount() और observable.share() के बीच व्यावहारिक अंतर क्या है। एक परिदृश्य का एक उदाहरण क्या होगा जिसमें हम share का उपयोग नहीं करना चाहते हैं?`शेयर()` और `प्रकाशित() के बीच अंतर। RefCount()`

+0

[टैग: System.Reactive] एक है। नेट टैग – i3arnon

उत्तर

11

यदि आप 'observable.prototype.share' देखते हैं तो कोई व्यावहारिक अंतर नहीं है, आप देखेंगे कि यह केवल 'source.publish()। RefCount()' देता है।

आप इसका उपयोग क्यों करना चाहते हैं, यह एक सवाल है कि आपका स्रोत प्रसारण शुरू होने पर आपको कितना नियंत्रण चाहिए।

चूंकि refCount() पहली सदस्यता पर अंतर्निहित पर्यवेक्षण को संलग्न करेगा, यह बहुत अच्छा मामला हो सकता है कि बाद के पर्यवेक्षकों को उन संदेशों को याद आएगा जो वे सब्सक्राइब कर सकते हैं।

उदाहरण के लिए:

var source = Rx.Observable.range(0, 5).share(); 

var sub1 = source.subscribe(x => console.log("Observer 1: " + x)); 
var sub2 = source.subscribe(x => console.log("Observer 2: " + x)); 

केवल पहले ग्राहक, किसी भी मान प्राप्त करता है, तो हम दोनों हम प्रयोग करेंगे उन्हें प्राप्त करना चाहते हैं जाएगा:

var source = Rx.Observable.range(0, 5).publish(); 

var sub1 = source.subscribe(x => console.log("Observer 1: " + x)); 
var sub2 = source.subscribe(x => console.log("Observer 2: " + x)); 

source.connect(); 
+5

आरएक्सजेएस 5 के साथ ऑपरेटर के दो उपयोगों के बीच एक अंतर है। देखें [यह मुद्दा] (https://github.com/ReactiveX/RxJS/issues/1363) मैंने – Christian

+0

उर्फ ​​के विस्तृत स्पष्टीकरण के लिए आरएक्सजेएस 5 रेपो में पोस्ट किया है, हां, मुझे यह पढ़ना याद है। मुझे लगता है कि मुझे संपादित करने की आवश्यकता होगी। – paulpdaniels

+1

@ क्रिस्टियन मैं वर्तमान में एक कोणीय 2 आवेदन में एक समस्या का सामना कर रहा हूँ। मेरे पास एकाधिक 'पर्यवेक्षक' के साथ http-request का 'पर्यवेक्षण' है। मेरे ब्राउज़र के डेवलपर-टूल्स एक कार्य के लिए 750 अनुरोधों के बारे में रिकॉर्ड करते हैं। जब मैं 'share()' को 'publ.refCount() में बदलता हूं, तो उसी कार्य के लिए केवल 50 अनुरोध शेष हैं। तो ऐसा लगता है कि 'शेयर()' ऐसा नहीं कर रहा है जो इसे करना चाहिए ('पर्यवेक्षण योग्य' साझा करें)। – Springrbua

संबंधित मुद्दे