2017-02-15 24 views
8

मैं एक rxjs नमूदारफेंक त्रुटि अंदर rxjs नमूदार

new Observable(subscriber => { 
    Observable.throw("error1"); 
    return Observable.throw("error2"); 
}) 
.subscribe(
    () => {}, 
    err => console.error(err) 
); 

त्रुटि 1 पकड़ा नहीं है अंदर एक त्रुटि फेंक करने की कोशिश कर रहा हूँ।

Argument of type '(this: Observable<{}>, subscriber: Subscriber<{}>) => ErrorObservable<string>' is not assignable to parameter of type '(this: Observable<{}>, subscriber: Subscriber<{}>) => TeardownLogic'. Type 'ErrorObservable<string>' is not assignable to type 'TeardownLogic' 

क्या एक नमूदार अंदर एक त्रुटि फेंक उचित तरीका है:

error2 एक संकलन त्रुटि देता है?

+0

कोशिश 'Observable.throw (नई त्रुटि (" error1 "))' की तरह एक त्रुटि फेंक:

Observable.create(subscriber => { subscriber.next('whatever'); }) .merge(Observable.throw(new Error("error2"))) .subscribe( () => {}, err => console.log(err.message) ); 

लाइव डेमो देखें। –

+0

@ ज्योतिबीबुआराजा काम नहीं करता है। यह सदस्यता ले() – phzonta

उत्तर

8

उपयोग Subscriber.error:

new Rx.Observable(subscriber => { 
 
    subscriber.error("error1"); 
 
    subscriber.error("error2"); // not called because a stream will be finalized after any error 
 
}) 
 
.subscribe(
 
() => {}, 
 
    err => console.error(err) 
 
);
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

1
एक नमूदार आपके द्वारा निर्मित के साथ

, आप observer.error() विधि की पहुंच है।

const obs = Observable.create(observer => { 

    // Emit a value. 
    observer.next("hello"); 

    // Throw an error. 
    observer.error("my error"); 

}); 

नोट: यदि आप RxJS 4 उपयोग कर रहे हैं, आप के बजाय onNext() और onError() का उपयोग करना होगा।

3

जब new Observable() या Observable.create() का उपयोग कर आप ग्राहक (प्रेक्षक) के लिए सीधे त्रुटि धक्का कर सकते हैं:

Observable.create(subscriber => { 
    subscriber.error(new Error("error1")); 
}) 
.subscribe(
    () => {}, 
    err => console.log(err.message) 
); 

गुमनाम समारोह new Observable() के लिए पारित वैकल्पिक रूप से एक सदस्यता समाप्त कॉलबैक लौट सकते हैं। यही कारण है कि यह आपको त्रुटि देता है क्योंकि आप एक अवलोकन कर रहे हैं।

Observable.throw("error1") का प्रयोग आम तौर पर आवश्यक नहीं है। यह सिर्फ एक अवलोकन योग्य है जो केवल एक त्रुटि को छोड़ देता है और कुछ भी नहीं। आपको निम्न रूप उदाहरण के लिए इसका इस्तेमाल कर सकते: https://jsbin.com/fivudu/edit?js,console

+0

एक निर्माता के अंदर इतने फेंक दिया जाता है त्रुटियों से पकड़ा नहीं है 'नई त्रुटि फेंक()' प्रभावी रूप से अनदेखी कर रहे हैं और रिपोर्ट नहीं? –

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