![](/img/trans.png)
[英]How to refer and assign to a global variable inside an anonymous function?
[英]Angular 2 : how to refer to a class variable inside a function called by Observable map
在服務中使用Observable
的Angular 2應用程序中,如何在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;
}
您可以在arrow函數extractData
的整個調用包裝起來:
this.http.get("url")
.map(data => this.extractData(data))
.catch(err => this.handleError(err))
注意我對this.handleError
做了同樣的this.handleError
。 這項技術將在您通話期間保持您this
的參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.