【问题标题】:Get Previous and Current Value from HTTP call Angular2从 HTTP 调用 Angular2 获取先前值和当前值
【发布时间】:2017-07-30 13:17:01
【问题描述】:

我有一个场景,我需要比较从初始服务调用和新服务调用获得的相同 URL 的值。

服务类:

getXRate(): Observable {
   return this.http.get('someURL').subscribe((data) => { return data.json(); } );
}

现在,在Component 1 中,我在ngOnInit 中调用此服务,如下所示:

ngOnInit(){
   this.service.getXRate().subscribe(data => this.r = data.r);
}

// 此时我有第一个值

现在,在component 2 中,调用相同的方法来检查Component 1 中返回的值是否存在差异。

我怎样才能做到这一点?

我尝试使用 ReplaySubject 和 BehaviorSubject,但没有完全摆脱它。

【问题讨论】:

  • 你能告诉你为什么要比较,可能有更好的方法来做到这一点
  • 我需要比较以提醒用户 x Rate 发生变化。如果是,他必须接受

标签: angular observable angular2-services behaviorsubject


【解决方案1】:

拥有一项服务来为您存储最后检索到的数据并在您的组件中使用它。

您现有的代码(请注意,您在给定示例中订阅了订阅)。
一些“服务”:

lastObject: any;

storeLast(lastObject:any){
  this.lasObject = lastObject;
}

getLastObject(){
  return this.lastObject;
}

getXRate(){
  return this.http.get('url').map(res => res.json());
}

组件 1:

ngOnInit(){
  this.service.getXRate().subscribe(res => this.service.storeLast(res));
}

组件 2:

getAndCompareLast(){
  let object = this.service.getLastObject();
  this.service.getXRate().subscribe(res => { //Do some compare logic...});
}

【讨论】:

  • 使用一些 HTTP 缓存怎么样?你能告诉我任何例子吗?
  • 缓存与比较存储的数据无关,在这种情况下特别是
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多