我只想返回一个值:在html 中
<tr *ngFor="let valCorr of valueCall| async">
<th>{{valCorr }}</th>
</tr>
在ts 中
valueCall:Observable<number[]>
//this.studentService.getResult() return an Observable<number[]>
this.valueCall:Observable=this.studentService.getResult().pipe(map(result=> result.filter(x => x>2)),take(1));
在我的服务
getResult():Observable<number[]> {
return of([1,2,3,4,5,6]);
}
结果不仅是一个元素似乎不起作用。有人能帮我吗?
嗨,伙计,使用这种方法可以使用find而不是filter来获得单个值,然后将该单个值转换为类型数组
this.valueCall = this.getResult().pipe(
map((result) => {
let a = result.find((x) => x > 2);
return [a];
})
);
take rxjs operatornotget one element else only execute one time the observable and unsubscribe,you are looking for
map((result:any[])=> {
const values=result.filter(x => x>2)
//be sure there're at least one element else return null
return values.length?values[0]:null
})
更新:关于";取";如果我们有一个像这样的可观察的
getResult():Observable<number[]> {
return timer(0,1000); //return 0,1,2,3.... each second
}
如果我们使用管道(取(1((
getResult().pipe(take(1))
当收到第一个值(0(时,我们取消订阅-没有更多的值获得-
查看一个简单的堆叠式