हमने अपने अनुप्रयोगों में से एक को एंगुलर 5 में अपग्रेड कर दिया है, और 0xमें संक्रमण के रूप में आरएक्सजेएस v5.5 में पेश किया गया है।Lettable rxjs ऑपरेटरों के संयुक्त पाइप में त्रुटि पकड़ें
इस वजह से, हमने .pipe()
ऑपरेटर के साथ नए सिंटेक्स में हमारी अवलोकन योग्य पाइपलाइनों को फिर से लिखा है।
हमारे पिछले कोड .switchMap()
अंदर इस प्रकार दिखाई देगा, एक .catch()
साथ करता है, तो एक त्रुटि फेंक दिया जाता है के रूप में प्रभाव के संचालन को बाधित नहीं करने के लिए।
@Effect()
loadData$ = this.actions$
.ofType(LOAD_DATA)
.map((action: LoadData) => action.payload)
.withLatestFrom(this.store.select(getCultureCode))
.switchMap(([payload, cultureCode]) => this.dataService.loadData(payload, cultureCode)
.map(result => {
if (!result) {
return new LoadDataFailed('Could not fetch data!');
} else {
return new LoadDataSuccessful(result);
}
})
.catch((err, caught) => {
return Observable.empty();
});
);
एक (यहाँ से निपटने त्रुटि सरलीकृत) dataService
यह पकड़ लिया और हैंडल किया जाएगा करने के लिए कॉल में फेंक दिया त्रुटि के मामले में।
.pipe()
के उपयोग के साथ
, अब हम इस
@Effect()
loadData$ = this.actions$
.ofType(LOAD_DATA)
.pipe(
map((action: LoadData) => action.payload),
withLatestFrom(this.store.select(getCultureCode)),
switchMap(([payload, cultureCode]) => this.dataService.loadData(payload, cultureCode)),
map(result => {
if (!result) {
return new LoadDataFailed('Could not fetch data!');
} else {
return new LoadDataSuccessful(result);
}
})
);
मैं कैसे इसी तरह से किसी भी फेंक दिया त्रुटियों नमूदार पाइप लाइन में, नए सिंटैक्स का उपयोग पकड़ कर सकते हैं है?
पुनर्रचना के बाद आप ले जाया गया '' map' switchMap' प्रक्षेपण से बाहर है, इसलिए किसी भी त्रुटि बाहरी धारा बंद हो जाएगा। कुछ ऐसा: 'स्विचमैप (([पेलोड, संस्कृतिकोड]) => this.dataService.loadData (पेलोड, संस्कृति कोड)। पाइप (मानचित्र ..., पकड़ो ...))' नौकरी करना चाहिए। –
महान @arturgrzesiak काम करता है! इसे एक उत्तर के रूप में पोस्ट करें और मैं इसे स्वीकार करूंगा! :) –