如何使用js自动识别json值的变化

时间:2019-04-19 14:01:42

标签: javascript json

我正在制作一个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 

1 个答案:

答案 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"