2016-04-14 5 views
11

आरएक्सजेवा ने हाल ही में Single पेश किया। मूल अवलोकन के स्रोत को संशोधित किए बिना पहले से मौजूद पर्यवेक्षक (जो कि बहुत अधिक एकल है) को एकल में परिवर्तित करने का कोई तरीका है?आरएक्सजेवा ने सिंगल <T> पेश किया। मैं एक अवलोकन <T> को एकल <T> पर कैसे परिवर्तित करूं?

उदाहरण के लिए, मेरे पास एक एपीआई सेवा कक्षा है जो एक अवलोकन योग्य लौटाती है - जो अनिवार्य रूप से रिमोट संसाधन से उपयोगकर्ता को ला रही है। मान लें कि मैं सेवा को संशोधित नहीं कर सकता। मैं इसे कहीं और उपभोग करना चाहता हूं लेकिन एकल लौटा दूंगा। मैं यह कैसे करु?

एक चुटकी अधिक पृष्ठभूमि

RxJava हाल ही में एक सिंगल को कमोबेश एक आरएक्स अनुकूल सरल कॉलबैक है की अवधारणा (यानी एक नमूदार उत्सर्जक एक वस्तु या कोई त्रुटि) (इसके बारे में यहाँ और अधिक पढ़ शुरू की - http://reactivex.io/documentation/single.html)

उत्तर

22

इस नई चीज को पूरा करने के लिए 2 नई सुविधा विधियां शामिल की गईं।

toSingle() एक नमूदार है कि एक एकल कि है कि आइटम

toObservable धर्मान्तरित एक नमूदार में एक एकल आइटम सिंगल द्वारा उत्सर्जित का उत्सर्जन करता है कि उत्सर्जन करता है में एक आइटम का उत्सर्जन करता है धर्मान्तरित और फिर पूरा करता

(स्रोत: http://reactivex.io/documentation/single.html)

+4

ध्यान दें कि यदि एकल (कोई आइटम, .toObservable है) यह Observable.empty लौट नहीं होगा()। इसके बजाय यह अभी भी NoSuchElementException फेंक देगा। इसलिए परिणामस्वरूप देखने योग्य एक ही बात नहीं है जैसे स्रोत शुरू करने के लिए एक अवलोकन योग्य था। – eis

2

rxjava2 आप Single.fromObservable() का उपयोग कर सकते हैं।

3

मुझे लगता है कि स्वीकृत उत्तर पुराना है। आपको शायद निम्न विधियों की जांच करनी चाहिए।

singleOrError: एक और केवल तत्व उत्सर्जन करता है, IndexOutOfBoundsException स्रोत से अधिक समय 1 आइटम या एक NoSuchElementException यदि स्रोत खाली है है अगर।

पहला ऑररर: स्रोत खाली होने पर पहले तत्व या NoSuchElementException को उत्सर्जित करता है।

lastOrError: स्रोत खाली होने पर अंतिमकरण या NoSuchElementException को उत्सर्जित करता है।

elementAtOrError: indexth तत्व या एक NoSuchElementException उत्सर्जन करता है। इस पृष्ठ पर

और जानकारी: https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0

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