मेरे पास मल्टीकास्टेड अवलोकन और एक अप्रत्याशित (मेरे लिए) व्यवहार के बारे में एक प्रश्न है, मैंने देखा।साझा किए गए अवलोकन और स्टार्टविथ ऑपरेटर
const a = Observable.fromEvent(someDom, 'click')
.map(e => 1)
.startWith(-1)
.share();
const b = a.pairwise();
a.subscribe(a => {
console.log(`Sub 1: ${a}`);
});
a.subscribe(a => {
console.log(`Sub 2: ${a}`)
});
b.subscribe(([prevA, curA]) => {
console.log(`Pairwise Sub: (${prevA}, ${curA})`);
});
तो, एक साझा करने योग्य एक है, जो प्रत्येक क्लिक ईवेंट पर 1 उत्सर्जित करता है। -1 ऑपरेटर के साथ शुरुआत के कारण उत्सर्जित किया जाता है। अवलोकन योग्य बी सिर्फ एक से नवीनतम दो मूल्यों को जोड़कर एक नया अवलोकन योग्य बनाता है।
मेरे उम्मीद थी:
[-1, 1] // first click
[ 1, 1] // all other clicks
मैं क्या देखा था:
[1, 1] // from second click on, and all other clicks
क्या मैंने देखा है कि मूल्य -1, तुरंत उत्सर्जित और 1 उप द्वारा सेवन किया जाता है से पहले भी उप 2 है अवलोकन करने के लिए सब्सक्राइब किया गया और चूंकि मल्टीकास्टेड है, इसलिए उप 2 पार्टी के लिए बहुत देर हो चुकी है।
अब, मुझे पता है कि मैं BehaviourSubject के माध्यम से मल्टीकास्ट कर सकता हूं और स्टार्टविथ ऑपरेटर का उपयोग नहीं कर सकता, लेकिन जब मैं स्टार्टविथ और मल्टीकास्ट शेयर के माध्यम से उपयोग करता हूं तो मैं इस परिदृश्य के उपयोग के मामले को समझना चाहता हूं।
जहां तक मैं समझता हूं, जब भी मैं .share() और .startWith (x) का उपयोग करता हूं, केवल एक ग्राहक को स्टार्ट के साथ अधिसूचित किया जाएगा, क्योंकि मूल्य के उत्सर्जन के बाद अन्य सभी सब्सक्राइबरों की सदस्यता ली जाती है।
तो क्या यह किसी विशेष विषय (व्यवहार/रीप्ले ...) के माध्यम से मल्टीकास्ट का कारण है या क्या मुझे इस शुरुआत के बारे में कुछ याद आ रहा है/साझा परिदृश्य?
धन्यवाद!
मुझे एक ही समस्या का सामना करना पड़ रहा है। क्या आप BehaviourSubject के साथ एक उदाहरण प्रदान कर सकते हैं? – Eselfar