javascript - 如何检测 Node.js 中的全局值变化

标签 javascript node.js

我想知道是否有一种方法可以让客户端检测到某些 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/

相关文章:

javascript - 如何从 Mongoose 中的数组中删除嵌套对象

javascript - 如何改变react中的状态值

javascript - Node.js 和 socket.io,客户端不共享计数器

javascript - 检索不同 JavaScript 文件中使用的数组内容

javascript - ajax中从字符串中提取十进制数字

javascript - 向下推内容的全宽子菜单

javascript - 在node.js中使用python脚本

JavaScript 正则表达式模式仅适用于数字并忽略反斜杠

javascript - SWFUpload 和 Post Params 不起作用?

javascript - 如何只接受来 self 自己的应用程序的请求?