0
我有這個代碼片段,它執行一些數據處理並返回一個數組。如何避免不必要的服務請求?
choose(n?: number): Observable<PickQuality[]> {
this.championService.getChampions()
.subscribe(champions => {
if(this.options.length == 0)
champions.forEach(champion =>
this.options.push(new PickQuality(champion, 0)));
// Some computing happens, chosen variable is defined here
this.chosenObserver.next(chosen);
});
let obs = new Observable<PickQuality[]>((observer => this.chosenObserver = observer));
return obs;
}
的事情是我必須調用getChampions()從我的服務每次選擇()運行,因爲我需要的情況下異步調用我的觀察者的next()。 if子句解決了內容的複製,但我仍然對我的服務進行了過多的調用。我怎樣才能讓服務只被調用一次,然後從對象本身檢索數據?
PS:我必須像這樣構造它,因爲它取決於來自服務的異步內容。在構造函數或ngOnInit()中填充「this.options」屬性將不起作用,因爲choose()調用將首先發生,所以我必須在choose函數()中填充數組。
什麼叫'choose()'?無論如何,這絕對不會發生在構造函數之前!通常這種異步調用應該進入ngOnInit(),並且從你的解釋中不清楚它爲什麼會失敗。 –
我有一個組件調用「choose()」。我試着用console.log來找出每個被調用的時候。即使構造函數首先運行,我也不能保證getChampions()結果可用於choose()函數。 –
如果我在ngOnInit()上運行異步調用,如何在調用選擇時確保內容可用? –