Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回可观测数据时参数值不一致_Javascript_Angular_Rxjs_Observable_Angular2 Services - Fatal编程技术网

Javascript 返回可观测数据时参数值不一致

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

我很难使用角度RxJS观测值

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));