【发布时间】:2020-08-18 22:27:11
【问题描述】:
我一直试图在 JavaScript 中观察地图对象的变化,但由于某种原因只能观察对象的创建。从地图中添加/删除数据时,可观察对象是否不起作用?
这是可观察的:
test(): Observable<Map<string, Object>> {
return of(this.testModel.test());
}
这是我订阅的:
test(): Observable<Map<string, Object>> {
let mapOb = this.testModel.test();
return Observable.create((obsrvr) => {
const originalSet = mapOb.set;
const originalDelete = mapOb.delete;
mapOb.set = (...args) => {
obsrvr.next(originalSet.call(mapOb, ...args));
};
mapOb.delete = (...args) => {
obsrvr.next(originalDelete.call(mapOb, ...args));
}
});
}
我在地图创建过程中看到了日志语句,但如果我向地图添加任何新条目,则不会记录任何内容。有人知道为什么会这样吗?
我在 maoOb.set 和 mapOb.delete 处收到错误:
Type '(key: string, value: Object) => void' is not assignable to type '(key: string, value: Object) => Map<string, Object>'.
Type 'void' is not assignable to type 'Map<string, Object>'
【问题讨论】:
-
你指的是 RxJS
Observables 吗?如果是,则搜索此返回多个结果,例如,stackoverflow.com/q/32683488/438992、gist.github.com/jayphelps/d8641e7213b56d368e7b 等。 -
“如果我向地图添加任何新条目,则不会记录任何内容” - 为什么会记录任何内容?您没有对地图进行更改的可观察对象,您有一个发出单个值的可观察对象,即地图本身。
-
您的代码不完整导致混淆。测试是否返回自身的可观察值? this.testModel.test() 返回什么?承诺?
-
@DaveNewton 是的,我指的是 RxJS Observable。
-
@jonrsharpe 你能澄清更多吗?我怀疑我可能观察到了错误的事情。您如何观察地图的变化?
标签: javascript observable