我从Socket中获得了一堆流,并且想要选择最新的项目。
我知道distinctUntilChanged
正在选择第一项,但我需要以某种方式撤销此功能。
总之,我想通过rxjs做到这一点:
In: 1 - 1 - 1 - 2 - 2 - 3 - 3 - 1 - 1 - 1 - 2 - 2 - 2 - 1 - 2 - 2 - 3 - 3
Out: - - - - 1 - - - 2 - - - 3 - - - - - 1 - - - - - 2 - 1 - - - 2 - 3 - -
答案 0 :(得分:0)
更改后我们可以发出最后一个值:
In: 1 - 1 - 1 - 2 - 2 - 3 - 3 - 1 - 1 - 1 - 2 - 2 - 2 - 1 - 2 - 2 - 3 - 3
Out: - - - - - - 1 - - - 2 - - - 3 - - - - - 1 - - - - - 2 - 1 - - - 2 - 3
import { pairwise, take, filter, map, merge, last } from 'rxjs/operators';
import { interval, from } from 'rxjs';
const stream$ = from([1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 2, 2, 2, 1, 2, 2, 3, 3]);
stream$
.pipe(
pairwise(),
filter(([prev, cur]) => prev !== cur),
map(([prev, cur]) => prev),
merge(stream$.pipe(last()))
)
.subscribe(console.log);