Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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
Angular 获取角度可观测流作为阵列_Angular_Rxjs_Observable - Fatal编程技术网

Angular 获取角度可观测流作为阵列

Angular 获取角度可观测流作为阵列,angular,rxjs,observable,Angular,Rxjs,Observable,我有一个列表,它应该模拟流: 列表=[ {姓名:'Str1',年龄:10}, {姓名:'Str2',年龄:10}, {姓名:'Str3',年龄:10} ]; 我从这个列表中创建了一个可观察的: Observable.from(this.list).skip(this.currentPage*this.pageSize).take(this.pageSize).subscribe(data=>this.pagerList=data,console.error); 在subscribe方法中,我

我有一个列表,它应该模拟流:

列表=[
{姓名:'Str1',年龄:10},
{姓名:'Str2',年龄:10},
{姓名:'Str3',年龄:10}
];
我从这个列表中创建了一个
可观察的

Observable.from(this.list).skip(this.currentPage*this.pageSize).take(this.pageSize).subscribe(data=>this.pagerList=data,console.error);
在subscribe方法中,我一个接一个地获取值。我应该如何等待整个数据被返回,然后得到整个列表。这里有take()操作符,在它之后,可观察对象必须停止

我不想把每个值一个接一个地放到数组中


我在这里是新来的,不仅是angular,还有javascript

scan
操作员应该做你想做的事

Observable.from(此列表)
.skip(this.currentPage*this.pageSize)
.take(this.pageSize)
.scan([],acc,curr)=>{acc.push(curr);返回acc;});
.subscribe(data=>this.pagerList=data,console.error);

您是否尝试使用
toArray
操作符

let list=[
{姓名:'Str1',年龄:10},
{姓名:'Str2',年龄:10},
{姓名:'Str3',年龄:10},
{姓名:'Str4',年龄:10},
{姓名:'Str5',年龄:10},
{姓名:'Str6',年龄:10}
];
设currentPage=2;
让pageSize=2;
可观察到的接收源(列表)
.skip(当前页面*页面大小)
.take(页面大小)
.toArray()
.subscribe(数据=>console.log(数据),console.error)

我认为这是更合适的解决方案:

Observable.of(this.list).map(x => x.slice(this.currentPage * this.pageSize)).map(x => x.slice(0, this.pageSize)).subscribe(data => this.pagerList = data, console.error);

我不明白这个。在第一个映射函数中,您将获得对象。如何分割对象?
Observable.of(this.list)
创建一个元素的序列,该元素的类型为数组,
map
应用于可观察值,在本例中为数组。这类似于reduce,但在收到结果之后。感谢您的回答。使用
scan
可以在每次事件后得到一个更新的数组,使用
toArray
可以在可观察对象完成时在最后只得到一个数组。