Я плохо знакомлюсь, поэтому давайте просто перейдем прямо к погоне:
Я получаю наблюдаемое из магазина редуксов, используя ngRedux.select
. Сразу после того, как я использую канал с distinctUntilChanged
с пользовательской функцией сравнения. Однако внутри этой функции старое значение всегда равно null
, независимо от того, как часто оно вызывается.
Также, когда я помещаю distinctUntilChanged
в более позднюю точку в трубе после некоторого анализа (который был первоначальным планом), он снова всегда будет возвращать одно и то же значение: первое, которое прошло через наблюдаемое. Почему-то мне кажется, что я совершенно не понимаю этого оператора, но я использую его так, как предлагает документация.
Вот полный код, который я использую:
this.ngRedux.select((store: RootDomain) => getValue(() => {
const localContext = store.core.context[contextUuid];
const globalContext = store.core.context[GLOBAL_CONTEXT_KEY];
const context = Object.assign({}, globalContext, localContext);
return context[key];
})).pipe(
distinctUntilChanged((x, y) => {
console.log('OLD: ', x);
console.log('NEW: ', y);
return isEqual(x, y);
})
);
Я также пытался все время возвращать true, чтобы посмотреть, изменится ли что-нибудь (конечно, это не так). x
всегда будет регистрироваться как null
здесь. Пожалуйста, помогите мне понять этого оператора!