【发布时间】:2018-08-31 00:52:31
【问题描述】:
我想实现一个具有 3 个特定属性的 Observable / Subject
- 记住最后发出的值并能够通过 getter (BehaviorSubject) 将其显示出来
- 仅在值更改时发出
- 它必须有一个强类型,以便消费者知道 getter 可用(又名 BehaviorSubject.getValue())
我正在考虑扩展 BehaviorSubject,但要确保我不会根据我的新手理解引入任何潜在的陷阱。
export class DistinctUntilChangedBehaviorSubject<T, TValue> extends BehaviorSubject<T> {
constructor(
initialValue: T,
private _distinctKeySelector?: (value: T) => TValue,
private _comparer?: _Comparer<TValue, boolean>
) {
super(initialValue);
}
public subscribe() {
// I'm particularly interested in knowing if this has any gotchas.
// Mostly things like creating subscriptions that don't get disposed as expected.
return super.distinctUntilChanged(
this._distinctKeySelector,
this._comparer
).subscribe.apply(this, arguments);
}
}
所以 2 个问题:
- 这似乎是一种合理的方法/这里有什么陷阱吗?
- 还有其他首选方法吗?
【问题讨论】:
标签: rxjs observable