我需要在结果观察中加入一个元素



我只想返回一个值:在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(时,我们取消订阅-没有更多的值获得-

查看一个简单的堆叠式

最新更新