我正在制作一个Web应用程序,以可视化方式动态更改数据。数据由具有两个键和两个值(浮点数和Date()
)的json组成。该值不是定期更改,而是几乎每分钟更改一次。我想找到不使用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
答案 0 :(得分:2)
尝试使用Proxy个对象。
从本质上讲,代理是对象的包装,但所有属性都具有预定义的获取器和设置器。您可以如下创建代理:
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"