typescript - 覆盖 Subject.next 方法
问题描述
我有以下代码,我想在其中覆盖next
一些自定义逻辑。它不能以这种方式工作,但只有当next
是具有箭头函数的属性时才有效。背后的原因是什么?
export class Store<T> extends ReplaySubject<T | undefined> {
next(value?: T) {
console.log("do something in my code");
super.next(value);
}
}
export class Store<T> extends ReplaySubject<T | undefined> {
next = (value?: T) => {
console.log("do something in my code");
super.next(value);
};
}
https://stackblitz.com/edit/typescript-override-subject-next
解决方案
Subject (和 Observables) 采用 Observer 对象,其方法如下next
:
const observer = {
next: () => {},
error: () => {},
complete: () => {},
};
您可以将此对象提供给 Subject (最好是 Observable) 而不是扩展它:
const subject = new Subject();
const observer = {
next: (val) => { ... custom logic };
< ... >
}
subject.asObservable().subscribe(observer);
推荐阅读
- java - 我面临 RecyclerView 没有附加适配器的问题,即使在将适配器设置为布局管理器之后也是如此。我一个
- c# - 将 JSON 转换为 C# 复杂对象
- ios - `iOS 13.1.3 update` - 启动屏幕后立即黑屏
- r - ggplot2 annotation_ticks 在绘图区域的外部
- android - Android:仅从左侧模糊图像
- python - python中导入目录文件的机制
- android - 从 SQLite 迁移到 Room:迁移没有正确处理表
- raspberry-pi3 - 树莓派 pi3 无法在主 HDMI 显示器上启动应用程序,可以使用 ssh -x 在远程启动
- msbuild - 无法通过构建定义检测错误
- python - Matplotlib:空白图和窗口不会关闭