2016-04-26 3 views
8

निम्नलिखित दो ईवेंट स्ट्रीमों पर विचार करें। प्रत्येक कार्यक्रम में टाइमस्टैंप/टीएस और मूल्य संपत्ति होती है।एक सामान्य घटना संपत्ति पर दो ईवेंट स्ट्रीम में कैसे शामिल हों?

Input stream

मैं मूल्य का एक आवेदन किया परिवर्तन के साथ एक है, जिसके परिणामस्वरूप धारा में, इन दो धाराओं जहां घटनाओं में एक ही टाइम स्टाम्प्स है संयोजित करना चाहते हैं। यदि एक स्ट्रीम में एक टाइमस्टैम्प गुम है (जैसे पीले ts=3 नीचे दिए गए उदाहरण में), तो उस टाइमस्टैम्प को अवहेलना किया जाना चाहिए।

enter image description here

जैसे xstream या rxjs एक प्रतिक्रियाशील प्रोग्रामिंग पुस्तकालय का उपयोग कर समस्या का समाधान करना चाहते हैं। मैं प्रतिक्रियाशील प्रोग्रामिंग की अवधारणाओं के लिए काफी नया हूं, लेकिन अगर किसी के पास कोई अन्य सुझाव है तो मैं सभी कान हूं। धन्यवाद!

+2

मुझे बस आपके आरेखों से प्यार है !! आपके मुद्दे के बारे में, सामान्य रूप से यह मुश्किल है, मेरा मतलब है कि आपको अपनी मिलान करने के लिए पूरी स्ट्रीम देखने की आवश्यकता है, जब तक कि आप ऑर्डरिंग की गारंटी नहीं दे सकते (यानी टाइमस्टैम्प समय के बढ़ते कार्य, जिसका अर्थ है कि कोई मूल्य क्रम से बाहर नहीं आया है)। अन्यथा यह 'join' ऑपरेटर – user3743222

+0

धन्यवाद का उपयोग करके किया जा सकता है :) हम शायद मान सकते हैं कि टाइमस्टैम्प हमेशा बढ़ते क्रम में आता है। – hampusohlsson

+0

भी अच्छा होगा अगर सभी मूल्यों के अलग-अलग टाइमस्टैम्प – user3743222

उत्तर

3

बस गठबंधन का उपयोग करें और केवल उन संयोजनों को पास करें जिनमें मिलान करने वाला टाइमस्टैम्प है। अन्य संयोजनों को null पर मैप किया गया है, जिसे आप बाद में फ़िल्टर करते हैं।

यहाँ Xstream में समाधान है:

var streamOut = xs.combine(
    (a, b) => { 
    if (a.ts === b.ts) { 
     return {ts: a.ts, value: a.value + b.value}; 
    } else { 
     return null; 
    } 
    }, 
    streamA, streamB 
).filter(x => x !== null); 

JSBin में चल रहा यह जाँच करें: https://jsbin.com/saxawatuza/edit?js,console

+0

बहुत साफ समाधान। धन्यवाद! – hampusohlsson

+0

एक गैर-संबंधित टिप्पणी, आंद्रे, ओपी ने 'xstream' टैग का उपयोग किया, जो 'xtream' स्ट्रीमिंग लाइब्रेरी से असंबंधित है। इसके लिए एक विशिष्ट टैग होना अच्छा लगेगा। – user3743222

+0

@ user3743222 मैं सहमत हूं –

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