我有以一定速率发出值的代码:
let source = zip (
interval(150) ,
from ([0,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3])
) .subscribe(a=>console.log(a))
Run Code Online (Sandbox Code Playgroud)
我想找到值 - 在N值已经确定之后(这意味着 - N重复相同的值).
例如,如果N=5,那么我需要第一次找到它产生5个相同的值.(并发出该值.)
题:
如何检测N个相同的值并发出该值(并完成流)?
所以这里的期望值是3,因为它是5个相同值的第一个系列:
您可以使用bufferCount(N, 1)这里1告诉bufferCount所有的排放,这意味着它会发出的数组后发射其缓冲区N项目.然后检查所有这些是否相同和完整.
const N = 5
from ([0,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3])
.pipe(
bufferCount(N, 1),
filter(buffer => buffer.length === N && buffer.every(i => i === buffer[0])),
take(1),
map(buffer => buffer[0]),
)
.subscribe(console.log);
Run Code Online (Sandbox Code Playgroud)
现场演示:https://stackblitz.com/edit/rxjs6-demo-xzb5so?file = index.ts
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |