我有這樣一段代碼,其由組件調用:爲什麼上次調用執行3次?
choose(n?: number): Observable<PickQuality[]> {
var chosenObserver: Observer<PickQuality[]>;
alert(n); // <-- Notice this line
this.getOptions().subscribe(options => {
alert(n); // <-- And this one
this.reevaluate();
var sorted = options.sort((a, b) => b.score - a.score);
var chosen: PickQuality[];
if(n) chosen = sorted.slice(0, n);
else chosen = sorted.slice(0, 1);
chosenObserver.next(chosen);
});
let obs = new Observable<PickQuality[]>(observer => chosenObserver = observer);
return obs;
}
該呼叫被以下:
test.choose().subscribe(a => console.log(a));
test.choose(5).subscribe(b => console.log(b));
test.choose(15).subscribe(c => console.log(c));
的第一呼叫正確地提醒打印(「未定義」,「5」 ,「15」),但第二次打印「15」3次。爲什麼會發生這種情況?它正常工作,但我做了一些改變(並且無法跟蹤)改變了這一點,我似乎無法修復它。
路易斯你好。你的代碼看起來很複雜。你有一個函數創建表外業務,那麼訂閱obsB對錶外業務發出值,然後最後返回OBSC換行表外業務....當然這可以簡化。你能從概念上描述**你的'choose()'函數應該達到什麼目的? – AngularChef
PickQuality有一個與分數關聯的對象(通過HTTP GET請求獲取)。我的getOption()獲取這些數組的數組,並選擇(n?)應該返回一個由這些分數排序的n大小的子數組。 –