对对象使用distinctUntilChanged

时间:2017-11-06 15:20:36

标签: javascript rxjs

我如何让distinctUntilChanged使用像这样的对象

myObs = Observable.from([{foo: 'bar'}, {foo: 'bar'}]);

myObs.distinctUntilChanged()
  .subscribe(value => {
  // I only want to receive {foo: 'bar'} once
});

2 个答案:

答案 0 :(得分:4)

您需要在distinctUntilChanged内传递一个返回布尔值的函数,以确保对象是相同的。

实施例

    myObs. distinctUntilChanged((a, b) => a.foo === b.foo)

答案 1 :(得分:0)

distinctUntilChanged采用函数比较器参数,因为默认情况下使用===相等进行比较(对于不同的对象引用,它总是不同的):

// compare by .foo which is a primitive
myObs.distinctUntilChanged((x,y) => y.foo === x.foo) 
.subscribe(value => {
  // receive {foo: 'bar'} once
});