簡體   English   中英

角度2-可觀察的返回

[英]Angular 2 - Return of Observable

我的服務中的Observable出現問題。 我需要獲取3個玩家的數據。 我的訂閱將數據從服務簽名到局部變量,然后將其推入數組。 很好,但是當我從if語句返回數據時,我遇到了錯誤。 我只能看到3個玩家之一。 如何在應用程序的整個生命周期內存儲所有數據? 問候。

服務:

  getData(query): Observable<any> {
if(this.dataFromDb)
{
  return Observable.of(this.dataFromDb);
}

    return this.http.get(query)
      .map(res => res.json())
      .do(res => this.dataFromDb = res)
      .catch(err => Observable.throw(err.json() || 'Błąd');
  }
}

零件:

export class FriendsComponent implements OnInit {


  myDataFromDb: any[] = [];
  constructor(public dataService: DataService) {
}
private getDataFromDb(query) {
    this.dataService.getData(query).subscribe((data) =>
    {
     this.myDataFromDb.push(data);
     console.log(data);
    });
  }
  ngOnInit() {

for (let i of this.dataService.friends) {
    this.dataService.query = `${this.dataService.apiUrl}${i.nick}${this.dataService.apikey}`;

    this.getDataFromDb(this.dataService.query);

  }
    console.log(this.myDataFromDb);
    }
}

和一些問題的照片:開始數據 開始數據

路徑變更后的數據。 路徑變更后的數據

您必須使用一個對象來“緩存”響應。 我個人將選擇將昵稱和apiKey發送給函數,但是在發送查詢時,您可以

dataFromDb:any={};
getData(query): Observable<any> {
if(this.dataFromDb[query])
{
  return Observable.of(this.dataFromDb[query]);
}

    return this.http.get(query)
      .map(res => res.json())
      .do(res => this.dataFromDb[query] = res)
      .catch(err => Observable.throw(err.json() || 'Błąd');
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM