2015-05-15 10 views
16

मेरा आखिरी परियोजना में, मैं rxJava का उपयोग करें और मुझे लगता है कि observable.doOnError('onErrorCallback').subscribe(action) और अलग अलग तरीकों से observable.subscribe(action, 'onErrorCallback') व्यवहार। यहां तक ​​कि दस्तावेज़ों से भी यह मेरे लिए स्पष्ट नहीं है कि उनके बीच वास्तव में क्या अंतर है और जब मुझे पहले और दूसरे संस्करण का उपयोग करना चाहिए।RxJava: क्या doOnError में कॉलबैक के बीच अंतर है ('कॉलबैक') और सदस्यता (* 'कॉलबैक')

उत्तर

21

doOnError ऑपरेटर आप एक दृश्य की त्रुटि प्रचार में पक्ष प्रभाव इंजेक्षन करने की अनुमति देता है, लेकिन त्रुटि प्रचार ही नहीं रुकती पर डिफ़ॉल्ट रूप से काम नहीं करता है के अनुसार। सब्सक्राइबर घटनाओं का अंतिम गंतव्य है और वे अनुक्रम 'बाहर निकलें' हैं।

आप नीचे दिए गए उदाहरण के साथ doOnError की उपयोगिता देख सकते हैं:

api.getData() 
.doOnError(e -> log.error(e)) 
.retry(2) 
.subscribe(...) 

यह आप त्रुटि में झांक सकते हैं की अनुमति देता है, लेकिन आप एक त्रुटि के मामले में पुन: प्रयास करने देता है। एक अंत ग्राहक के साथ:

api.getData() 
.subscribe(v -> {}, e -> log.error(e)); 

आपको अपने तरीके से त्रुटि (लॉगिंग के अलावा) को संभालने की व्यवस्था करना है।

0

प्रलेखन doOnError एक विशेष समयबद्धक

+2

यह सब्सक्राइब() के लिए भी सच है, लेकिन मुझे लगता है कि ओपी के सवाल के लिए अप्रासंगिक है। – akarnokd