मैं कोणीय 2 और पर्यवेक्षकों के लिए नया हूं इसलिए यदि मेरी समस्या तुच्छ है तो मैं क्षमा चाहता हूं। वैसे भी मैं आरएक्सजेएस का उपयोग कर कोणीय 2 HTTP क्लाइंट का परीक्षण करने की कोशिश कर रहा हूं। हालांकि मुझे यह काम करने के लिए मिला है, मुझे उस सेवा में और तर्क जोड़ने की ज़रूरत है, जिस पर मैं वर्तमान में काम कर रहा हूं। असल में मैं उस वेब ऑब्जेक्ट से प्राप्त ऑब्जेक्ट को कनवर्ट करने के लिए मैपिंग फ़ंक्शन करना चाहता हूं, जिसे मैं एंगुलर में मॉडल ऑब्जेक्ट से जोड़ता हूं।नक्शा समारोह से कोणीय 2 आरएक्सजेएस कॉलिंग क्लास फ़ंक्शन
import { Injectable } from 'angular2/core';
import { Http, Response } from 'angular2/http';
import { Observable } from 'rxjs/Observable';
import { Person } from '../models/person';
@Injectable()
export class PersonsService {
constructor(private http: Http) { }
private personsUrl = 'http://localhost/api/persons';
getPersons(): Observable<Person[]> {
return this.http.get(this.personsUrl)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
if(res.status < 200 || res.status >= 300) {
throw new Error('Bad response status ' + res.status);
}
let body = res.json();
return body.data || {};
}
private handleError(error: any) {
let errMsg = error.message;
return Observable.throw(errMsg);
}
}
ऊपर कोड मैं जो भी कोई समस्या नहीं है के साथ:
इस कोड है कि काम करता है। मेरे पास जो मुद्दा है वह यह है कि मैं उस ऑब्जेक्ट को मैप करना चाहता हूं जो मुझे सेवा से प्राप्त हो रहा है, जिसमें मेरे पास कोणीय i.e. Person
है। मैंने जो कोशिश की है वह extractData
फ़ंक्शन से दूसरे फ़ंक्शन को कॉल करना है जिसका उपयोग .map
फ़ंक्शन द्वारा किया जा रहा है।
private extractData(res: Response) {
if(res.status < 200 || res.status >= 300) {
throw new Error('Bad response status ' + res.status);
}
let body = res.json();
// map data function
var data = this.mapData(body.data);
return data || {};
}
private mapData(data: any) {
// code to map data
}
जाहिर है इसके बाद के संस्करण कोड के रूप में जब this
extractData
समारोह अंदर संदर्भित है, this
PersonsService
वर्ग का उल्लेख नहीं करता काम नहीं करता है, लेकिन यह एक MapSubscriber
वस्तु को दर्शाता है।
मुझे नहीं पता कि "बाहरी" फ़ंक्शन को कॉल करना संभव है या नहीं। यह एक मूर्ख बात हो सकती है लेकिन मुझे इसके बारे में कोई जानकारी नहीं मिल रही है।
बिल्कुल सही! बहुत बहुत धन्यवाद :) क्या आप इसके पीछे तर्क की व्याख्या कर सकते हैं? –
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions इसके बिना 'यह' उस फ़ंक्शन को इंगित करेगा जहां कॉल किया गया है। –
मैं इस पर अपने बालों को खींच रहा था। धन्यवाद! –