Javascript 返回可观测数据时参数值不一致
我很难使用角度RxJS观测值Javascript 返回可观测数据时参数值不一致,javascript,angular,rxjs,observable,angular2-services,Javascript,Angular,Rxjs,Observable,Angular2 Services,我很难使用角度RxJS观测值 getOptions(): Observable<PickQuality[]> { // Fetches content from my service } choose(n?: number): Observable<PickQuality[]> { var chosenObserver: Observer<PickQuality[]>; alert(n); // <---- 1st alert
getOptions(): Observable<PickQuality[]> {
// Fetches content from my service
}
choose(n?: number): Observable<PickQuality[]> {
var chosenObserver: Observer<PickQuality[]>;
alert(n); // <---- 1st alert
return this.getOptions().map(options => {
alert(n); // <---- 2nd alert
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);
return chosen;
});
}
第3个警报正确打印(未定义、5、15)。但是第32个警报打印“15”3次,我不知道为什么。最后的结果也是不正确的,因为我的函数总是返回一个15大小的切片。我删除了类型注释,并通过jsbin快速运行了它,它生成了您想要的结果。我认为问题在于示例中没有包含的代码。你能在你的TypeScript类之外用这段代码重现你的问题吗?你指的是什么类型注释?我无法复制它,因为它使用了一些其他类的代码,并且在Angular服务器上运行,我不知道如何在线执行。我的意思是我将您的TypeScript简化为ES6,并且运行良好。看看这里:@MattBurnell,仅供参考,JSBin支持TypeScript,所以不需要麻烦;谢谢你告诉我。不幸的是,TS版本()也没有表现出所描述的行为。我删除了类型注释,并通过jsbin快速运行了它,它产生了您想要的结果。我认为问题在于示例中没有包含的代码。你能在你的TypeScript类之外用这段代码重现你的问题吗?你指的是什么类型注释?我无法复制它,因为它使用了一些其他类的代码,并且在Angular服务器上运行,我不知道如何在线执行。我的意思是我将您的TypeScript简化为ES6,并且运行良好。看看这里:@MattBurnell,仅供参考,JSBin支持TypeScript,所以不需要麻烦;谢谢你告诉我。不幸的是,TS版本()也没有表现出所描述的行为。
test.choose().subscribe(a => console.log(a));
test.choose(5).subscribe(b => console.log(b));
test.choose(15).subscribe(c => console.log(c));