如何在一个组件中使用多个用户调用而不覆盖所有用户调用的数据

时间:2018-08-30 10:39:20

标签: javascript angular typescript angular6 rxjs6

我在mat-tab的不同选项卡中使用了3种API服务,但是当我在选项卡之间切换时,我从所有3种API中获得了数据组合。

我在一个组件中定义了三个函数,在该组件中,我在所有不同的函数中调用不同的API,并在ngOninit()中调用这三个函数。当将获取的数据打印到控制台中时,我正在将数据附加到彼此。

例如,如果功能1有20条记录,功能2有3条记录,功能3也有3条记录。

因此,如果首先执行功能1,则将记录20条记录,之后,如果执行功能2,则将记录20 + 3 = 23条记录(而此处仅记录3条记录),最后是函数3执行后返回23 + 3 = 26条记录(这里也应该只有3条记录)。

试图在特定函数中获取值后退订该函数。无法做到这一点。

constructor(private _server: ServerService) {}
ngOnInit(): void {
  this.f1();
  this.f2()
}

getf1(): void {
  this._server.getf1count()
       .subscribe(exeJened => {
      this.exeJened = exeJened
      console.log('exe',this.exeJened)
     })
}
getf2(): void 
{
  this._server.getf2count()
       .subscribe(queJened => {
      this.queJened = queJened
    console.log('que',this.queJened) }

     })
}

exe的结果:20条记录的数组 que的结果:23条记录的数组 exe有20条记录,而que有3条记录。 无法上传屏幕截图。

服务器服务代码:

 constructor(private _http: HttpClient){}
getf1count():Observable<any>
  {
  return this._http.get(this.executed_URL)
  .pipe(
        map(exeresult=>exeresult['serverserials']),
        retry(4),
        catchError(this.handleError)
    )
  }
  getf2count():Observable<any>
  {
  return this._http.get(this.queued_URL)
  .pipe(
        map(queresult=>queresult['serverserials']),
        retry(4),
        catchError(this.handleError)
    )
  }

0 个答案:

没有答案