在用于服务的Angular 2 App中Observable
,如何在其中引用类的私有字段map
?如下代码所示,我们如何this._dataStore
在extractData
函数内部引用?谢谢!
请注意,我没有看到这个问题是建议把函数体里面() => {function body here}
,但我真的希望能够调用的函数,尤其是这个逻辑可能会在其他地方使用(不想复制和粘贴遍布各地。)
@Injectable()
export class DataService{
constructor(private http: Http){}
private _dataStore = [];
getData(): Observable<any> {
if(this._dataStore.length > 0) { //return cached data
return Observable.of(this._dataStore);
} else {
return this.http.get('url')
.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);
}
var data = res.json();
for (var i in data['items']){
this._dataStore.push(data['items'][i]); //ERROR this._dataStore undefined
}
return this._dataStore;
}
您可以将整个调用包装到extractData
箭头函数中:
this.http.get("url")
.map(data => this.extractData(data))
.catch(err => this.handleError(err))
请注意,我对做了同样的事情this.handleError
。此技术将this
在您通话期间保持您的参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句