निष्पादित हो जाता है मैं एक अजीब मुद्दा जहां Angular2 के (RC1) Http सेवा दो बार http.post कॉल निष्पादित करता है भर में आया था। मैंने अपना ऐप डीबग किया है और मुझे पता है कि यह एक क्लिक इवेंट मुद्दा नहीं है। कोर कॉल कॉलAngular2 http.post दो बार
public create(json: Object, params?: Object): Observable<T> {
let body = JSON.stringify([json]);
let headers = this.getHeaders();
let options = new RequestOptions({ headers: headers });
return this._http.post(this.createURL(this.getCreateURL(), [], params), body, options)
.map(res => this.handleObjectResponse(res));
}
एक बार चलाए जाने वाले सभी कॉल। तब जब मैंने इस मुद्दे का पता लगाना शुरू किया तो मुझे पता चला कि मेरा हैंडलर this.handleObjectResponse
दो बार निष्पादित हो जाता है। तो मैं आगे delved और @angular/http/src/backends/xhr_backend.ts
पर पहुंच गया है, जहां वे इस
constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {
this.request = req;
this.response = new Observable<Response>((responseObserver: Observer<Response>) => {
let _xhr: XMLHttpRequest = browserXHR.build();
_xhr.open(RequestMethod[req.method].toUpperCase(), req.url);
// load event handler
...
..
तो मैं एक ब्रेकपाइंट this.request = req;
पर एक और ब्रेकप्वाइंट let _xhr: XMLHttpRequest = browserXHR.build();
पर डाल दिया और उसके बाद क्या करना है और मुझे पता चला मैं पहली बार ब्रेकप्वाइंट एक बार हिट लेकिन फिर मैं से दूसरे ब्रेकप्वाइंट मारा दो बार कॉलबैक
यह मैं पागल गाड़ी चला कर दिया गया है तो मैं जांच करने के लिए किसी को भी angular2 internals से परिचित कुछ प्रकाश यह एक बग या कुछ है कि मैं गलत किया है की तरह लग रहा है कि क्या शेड सकता है कि क्या करना चाहता था। GenericService और FullService जो GenericService लागू होता है:
मेरी कोड में मैं कुछ सार सामान्य सेवा कक्षाएं बना लिया है। इन दोनों सार और उपयोग जेनरिक कर रहे हैं और वास्तविक सेवा कक्षाएं कि विभिन्न घटकों में इंजेक्शन मिल सब या तो GenericService या FullService का विस्तार। क्या आप लोग सोचते हैं कि यह सेटअप संभवतः डबल पोस्ट निष्पादन के लिए ज़िम्मेदार हो सकता है?
सभी विचारों की सराहना कर रहे हैं!
अग्रिम धन्यवाद!
पीएस
इस के साथ ऐसा नहीं होता हो जाता है लेकिन यह भी कहते हैं के साथ होता है।
क्या आप कॉलिंग कोड साझा कर सकते हैं? हो सकता है कि अवलोकन योग्य पर एक से अधिक सब्सक्राइब करें, इस मामले में 'इसे वापस करें ._http.post (this.createURL (this.getCreateURL(), [], पैराम्स), बॉडी, विकल्प) .map (res => this.handleObjectResponse (res))। शेयर(); ' इसे हल करना चाहिए https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/share.md – teleaziz
पवित्र बकवास! बहुत बहुत धन्यवाद - जिसने वास्तव में इसे हल किया था। अब मुझे अपने सिर को लपेटने की ज़रूरत है जो मैंने इसे पहले स्थान पर करने के लिए किया है। इसे उत्तर के रूप में पोस्ट करने के लिए स्वतंत्र महसूस करें ताकि मैं इसे स्वीकार कर सकूं और फिर एक टन धन्यवाद !!!! – RVP