我想知道是否有一种方法可以让客户端检测到某些 global.variable 已更改并在 global.variable 值更改时更新浏览器上的值。
我的用例是我有一个添加到全局对象的模块,以便在不同的用户请求之间保持其状态。每个用户都可以独立修改此对象 (global.myobject.myproperty) 的属性,但我希望在任何其他用户修改 global.myobject.myproperty 时更新它们。
我是 Javascript 和 Node.js 的新手,主要是在探索未知领域,所以请不要以为我知道太多。 :)
感谢任何指导。
最佳答案
这是一种使用 EventEmitter 的方法
var EE = require("events").EventEmitter;
function MyObject() {
// call EE constructor
EE.call(this);
// myProperty instance variable
var myProperty;
// define dynamic property
Object.defineProperty(this, "myproperty", {
get: function() {
return myProperty;
},
set: function(newValue) {
myProperty = newValue;
this.emit("change:myproperty", myProperty);
return myProperty;
}.bind(this)
});
}
// setup prototype
MyObject.prototype = EE.prototype;
MyObject.prototype.constructor = MyObject;
好的,让我们检查一下!
// create an instance of your object
var obj = new MyObject();
// listen for changes
obj.on("change:myproperty", function(myproperty) {
console.log("myproperty changed to:", myproperty);
});
// change the property
obj.myproperty = "foo!";
输出(检查控制台)
"myproperty changed to: foo!"
关于javascript - 如何检测 Node.js 中的全局值变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080704/