不确定这方面的正确术语,但我正在使用NodeJS中的一些API以及Mongoose。我有一堆Mongoose记录,其中包含来自Google Maps API的数据,我想为每个记录创建一个监听器,以便在填写特定字段时进行观察。
我不能通过简单的回调来做到这一点,因为API是速率限制的,需要间隔排队系统。
相反,我喜欢这样的事情:
var obj1 = {name: 'rec1', mapData: {}, fieldData: {} };
obj1.on('mapDataComplete', function(){...});
当mapDataComplete
从其初始状态更改时,会发出obj1.mapData
。
答案 0 :(得分:0)
您正在寻找的是Object.observe。
var obj1 = {name: 'rec1', mapData: {}, fieldData: {} };
Object.observe(obj1, function(change){...});
请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe
答案 1 :(得分:0)
我一直在找同样的事情。 现在使用WatchJS对我来说很好。
//defining our object however we like
var ex3 = {
attr1: 0,
attr2: "initial value of attr2",
attr3: ["a", 3, null]
};
//defining a 'watcher' for the object
watch(ex3, function(){
alert("some attribute of ex3 changes!");
});
//when changing one of the attributes of the object the watcher will be invoked
ex3.attr3.push("new value");
如果我必须自己实现它(我不知道WatchJS是如何工作的),我可能会将“pojo”的属性包含在“setter”中。并且' getter'。
如果属性是一个数组,我会将它包装成拼接,连接,推送等。 让每一个人都成为一个事件。
一开始可能听起来很多工作,但我相信你能很快看到结果。