我正在制作一个Web应用程序,可以可视化动态变化的数据的变化。 数据由JSON形成,JSON有两个键和两个值(浮点数和Date()
(。 该值不是定期更改,而是几乎每分钟更改一次。我想找到不使用 js setInterval()
的值变化。
我已经尝试过setInterval()
但是,很难获得实际的更改。 因为更改 JSON 值的周期不是有规律的。 有时最小 180ms,最大 16000ms
JSON形式就是这样。
{
key : 10,
time : /*new Date()*/
}
结果应该是这样的
current value : 20 (updated 2019.4.19 11:01)
the difference is +10
尝试使用代理对象。
从本质上讲,代理是对象的包装器,但为所有属性提供了预定义的 getter 和 setter。您可以按如下方式创建代理:
const obj = {a: 1, b: 2};
const proxy = new Proxy(obj, {
set(target, propName, value) {
console.log(`Method value has changed, previous is ${target[propName]}, next value is ${value}`)
target[propName] = value;
return target[propName];
}
})
现在,您可以在 setter 中编写任何副作用,并使用代理对象而不是原始对象。
proxy.a = 7 // will log "Method value has changed, previous is 1, next value is 7"