RxJS distinctUntilChanged
uniqueUntilChanged
返回一个 Observable,它发出源 Observable 发出的所有项目,这些项目与上一个项目相比是不同的。
distinctUntilChanged<T, K>(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction
<T>
参量
相比 | 可选的。默认值为undefined 。调用可选的比较函数以测试某项是否与源中的上一项不同。 |
---|---|
keySelector | 可选的。默认值为undefined 。类型:(x: T) => K 。 |
returns
MonoTypeOperatorFunction<T>
:一个 Observable,它从源 Observable 发出具有不同值的项目。
描述
如果提供了比较器功能,则将为每个项目调用比较器功能,以测试是否应发出该值。
如果未提供比较器功能,则默认情况下使用相等检查。
例
一个简单的数字例子
import { of } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(
distinctUntilChanged(),
)
.subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4
使用比较功能的示例
import { of } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
interface Person {
age: number,
name: string
}
of<Person>(
{ age: 4, name: 'Foo'},
{ age: 7, name: 'Bar'},
{ age: 5, name: 'Foo'},
{ age: 6, name: 'Foo'},
).pipe(
distinctUntilChanged((p: Person, q: Person) => p.name === q.name),
)
.subscribe(x => console.log(x));
// displays:
// { age: 4, name: 'Foo' }
// { age: 7, name: 'Bar' }
// { age: 5, name: 'Foo' }