cartant के जवाब से ऊपर अच्छी तरह से काम करता है, और उत्तर देता है प्रश्न पूछा गया था (मैं इसे टाइपस्क्रिप्ट में कैसे परिभाषित कर सकता हूं, ताकि मैं आरएक्सजे/पर्यवेक्षक और इस ऑपरेटर को आयात कर सकूं, जैसे मैं आरएक्सजेएस ऑपरेटरों के साथ करता हूं?)
मैं हाल ही में let
ऑपरेटर जो करता है, तो आप वास्तव में समारोह एक ऑपरेटर के रूप में लागू करने के लिए, अभी भी आप अपने कोड सूख दूँगी की जरूरत नहीं है की खोज की।
मैं अपने रेल बैकएंड के साथ इंटरफ़ेस के लिए एक कोणीय 2 सेवा को लागू करने के लिए शुरू कर रहा था और जानता था कि मेरी अधिकांश एपीआई कॉल बहुत समान दिखती हैं, इसलिए मैं एक समारोह में सामान्य सामानों को आजमाने और रखना चाहता था।
लगभग सभी कॉल निम्न करेगा: एक त्रुटि पर
- पुन: प्रयास करें (मेरी समारोह नीचे उस मोर्चे पर और अधिक काम करने की जरूरत)
- (एक टाइपप्रति स्थानीय रूप से परिभाषित वर्ग में http प्रतिक्रिया के नक्शे json-typescript-mapper के माध्यम से)
- संभाल त्रुटियों
यहां एक सामान्य समारोह के माध्यम से अपने उपयोग मेरी http प्रतिक्रियाओं को let
ऑपरेटर (हाथ का एक उदाहरण है leResponse) rxjs के माध्यम से ऑपरेटर चलो।
handleResponse<T>({klass, retries=0} :{klass:any,retries?:number }) : (source: Observable<Response>) => Observable<T> {
return (source: Observable<Response>) : Observable<T> => {
return source.retry(retries)
.map((res) => this.processResponse(klass,res))
.catch((res) => this.handleError(res));
}
}
processResponse(klass, response: Response) {
return deserialize(klass, response.json());
}
handleError(res: Response) {
const error = new RailsBackendError(res.status, res.statusText);
return Observable.throw(error);
}
getUserList({page=1,perPage=30,retry=0}: { page?:number, perPage?:number, retry?:number }={}) : Observable<UserList> {
const requestURL = `/api/v1/users/?${this.apiTokenQueryString}&page=${page}&per_page=${perPage}`;
return this.http.get(requestURL).let(this.handleResponse<UserList>({klass: UserList}));
}
मेरे पास एक समान प्रश्न था, यह एक अच्छा समाधान की तरह दिखता है। चूंकि यह केवल ऑपरेटरों की एक श्रृंखला है, क्या यह त्रुटियों को संभालता है और डिफ़ॉल्ट रूप से पूरा करता है? ऐसा लगता है कि यह चाहिए, लेकिन मैं rxjs के लिए नया हूँ। – nPn
@ एनपीएन हाँ, त्रुटियों और समापन रचनाकृत अवलोकन योग्य ग्राहकों द्वारा प्राप्त किए जाएंगे। ऐसा कुछ भी नहीं है जिसे यहां करने की आवश्यकता है। – cartant
जब मैं इस दृष्टिकोण को आज़माता हूं, तो मुझे यह त्रुटि मिलती है: 'अपवाद: अनकॉल्ड (वादे में): त्रुटि: त्रुटि ./DashboardComponent क्लास डैशबोर्ड कॉम्पोनेंट - इनलाइन टेम्पलेट: 2: 4 के कारण: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable __। Observable.of (...) .restrictToCommand एक फ़ंक्शन नहीं है टाइपरर: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable __। Observable.of (...)। प्रतिबंधितToCommand एक functio नहीं है। कोई विचार? –