2015-01-31 4 views
6

विचार करें कि मेरे पास डेटा की दो धाराएं हैं, क्या इन दोनों धाराओं के बीच डेटा पर शर्तों को लागू करने और शर्तों को लागू करने का कोई तरीका है? उदाहरण के लिएदो धाराओं को कैसे मर्ज करें (बिना नल के) और जोड़े पर स्थितियां लागू करें?

Stream A : A, B, C, D.... 
Stream B : -, A, -, -.... 
Composed : (A,-),(B,A),(C,-),(D,-).... 

आरएक्सजेएस का उपयोग करके ऊपर बनाई गई स्ट्रीम कैसे प्राप्त करें? मैं कुछ अधिसूचनाओं को उठाने के लिए तैयार धाराओं पर स्थितियों को लागू करना चाहता हूं। इसके अलावा अंतिम ज्ञात गैर-शून्य डेटा का उपयोग करना संभव होगा उदाहरण के लिए नीचे बनाई गई स्ट्रीम देखें।

Stream A : A, B, C, D.... 
Stream B : 1, null, 2, null.... 
Composed : (A,1),(B,1),(C,2),(D,2).... 

मैं सिर्फ प्रतिक्रियाशील धाराओं विचार के साथ खेलना शुरू कर दिया है, इसलिए मुझे सही करें अगर मैं प्रतिक्रियाशील धाराओं के विचार को गलत समझा गया है।

+0

डुनो यह वास्तव में आरएक्सजेएस में कैसा है, लेकिन आम तौर पर पहली समस्या को आमतौर पर 'ज़िप' के साथ हल किया जाता है जिसके बाद दो धाराओं को जोड़ों की धारा के रूप में विलय कर दिया जाता है। डुनो फिर से दूसरी समस्या कैसे हल की जानी चाहिए। –

उत्तर

11

दो ऑपरेटर हैं जो आपके प्रस्ताव के लिए सेवा कर सकते हैं।

Zip: RxJs के लिए
Rx Zip
संदर्भ: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/zip.md

CombineLatest: RxJs के लिए
Rx CombineLatest
संदर्भ: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/combinelatest.md

छवियों के बीच अन्तर को स्पष्ट दोनों। अब आप where का उपयोग करके, आपको देखने योग्य को फ़िल्टर करने की आवश्यकता है, जो फ़िल्टरों में से एक शून्य है, तो फ़िल्टर करेगा।

Stream A : A, B, C, D, E.... 
Stream B : 1, null, 2, null, 3.... 
Composed : (A,1),(B,1),(C,2),(D,2).... 

आप पिन का उपयोग करते हैं और कहाँ (के बाद शून्य मान छानने), परिणाम होगा:

Composed: (A,1),(C,2),(E,3) 

आप का उपयोग करते हैं

दुर्भाग्य से न तो ऑपरेटरों इस व्यवहार है कि आप का वर्णन प्राप्त कर सकते हैं जहां (पहले शून्य मूल्यों को फ़िल्टर करना) और ज़िप, परिणाम होगा:

Composed: (A,1),(B,2),(C,3) 

आप का उपयोग करते हैं CombineLatest निश्चित रूप से आदेश की निर्भर करेगा कि घटनाओं स्ट्रीम में होता है, और है, जहां आप where ऑपरेटर रखा जाएगा, परिणाम अलग हो सकता है कि तुम क्या दिखाया गया है, उदाहरण के लिए:

Stream A : A, B, C, D.... 
Stream B : 1, null, 2, null.... 
Composed : (A,1),(B,1),(C,1),(C,2),(D,2).... // OR 
Composed : (A,1),(B,1),(B,2),(C,2),(D,2).... 

आप जब तक अधिक विशिष्ट आवश्यकताएं हैं, मुझे लगता है कि मैंने जो विकल्पों का उल्लेख किया है उनमें से एक वह है जिसे आप ढूंढ रहे हैं, जानकारी जोड़ने में संकोच न करें।

वहाँ नमूदार की रचना करने के कई तरीके, अन्य ऑपरेटरों का उल्लेख नहीं कर रहे हैं:

  • distinctUntilChanged, ज़िप या नवीनतम का सिर्फ भाग के लिए सीमित करने के लिए कुंजी चयनकर्ता समारोह का उपयोग कर संरचना के फाइनल में जोड़ा जा सकता है, मूल्य।
  • switch, एक दूसरे के अंदर एक अवलोकन करने के लिए इस्तेमाल किया जाता था।
संबंधित मुद्दे