Angular 2:如何在Observable映射调用的函数中引用类变量

龙猫

在用于服务的Angular 2 App中Observable,如何在其中引用类的私有字段map如下代码所示,我们如何this._dataStoreextractData函数内部引用谢谢!

请注意,我没有看到这个问题是建议把函数体里面() => {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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 angular2/4 中未调用的函数中引用组件的变量?

如何在Angular中管道/映射Observable

angular 2无法引用函数中的变量

如何在Angular 2中的promise中调用类方法?

如何在Angular2中进行嵌套的Observable调用

如何在Angular 6中的另一个类中的一个类中调用函数?

如何使用Angular2中的Observable Map函数将Http服务返回的Response对象映射到TypeScript对象

如何在Angular 2中订阅变量?

如何在Angular 2中获取组件本身和已定义变量的引用

您如何在ionic 2中调用Angular 2中内置的函数?

如何使用 Angular 2/4 在 Typescript 类中调用外部 javascript 库函数?

如何使用 angular 2 在组件类上的 ngAfterViewInit() 中调用 $( document ).ready() jQuery 函数

Angular2 Observable-如何在继续循环之前等待循环中的所有函数调用结束?

Angular2:匿名函数中的访问类变量

如何将从函数调用返回的值分配给Angular 2中html内的变量

Angular & Rxjs:如何在返回 Observable 的函数中将 json 映射到对象数组

如何在 div 标签中调用函数而不使用 *ngIf 在 Angular 2 中

Angular2 Observable-如何从Observable的构造函数外部调用next

如何在Angular 2中的Observable中修改数据?

如何在 angular 2 中访问 VideoJs 函数中的成员变量和方法?

如何在Angular 10中调用主体onload JavaScript函数

如何在angular中调用外部jQuery函数

用=>定义的函数如何在Angular中调用?

如何在 Angular 中从服务调用函数到组件?

如何在angular 5中调用外部javascript函数?

如何在Angular 5中从Typescript调用JavaScript函数?

如何在 Angular 中完全加载页面后调用函数?

如何在Angular 7中管理API函数调用服务

如何在Angular Directive中调用我自己的函数?