Javascript node.js模块将对象传递给singleton
我在node.js中使用了一个类,我希望在需要时将各种对象传递给它 下面是课程:Javascript node.js模块将对象传递给singleton,javascript,node.js,express,Javascript,Node.js,Express,我在node.js中使用了一个类,我希望在需要时将各种对象传递给它 下面是课程: var ItemHandler = (function() { var items = new Array(); return { start: function (item, callback) { items.push(item); ItemHandler.timer(
var ItemHandler = (function() {
var items = new Array();
return {
start: function (item, callback) {
items.push(item);
ItemHandler.timer();
},
timer: function () {
var timer = setTimeout(function() {
console.log('test');
ItemHandler.timer();
}, 1000);
}
};
})();
module.exports = ItemHandler;
这在我的一个路由中被调用,index.js。像这样:
var itemHandler = require('./lib/item.handler.js');
itemHandler.start(items);
我想做的是将路由中使用的其他对象传递到此文件。与此类似:
var itemHandler = require('./lib/item.handler.js')(socket)(res);
在这里,我将传入socket对象(从socket.io连接和响应返回)
我将如何构造类以接受这两个参数
非常感谢
function ItemHandler(param) {
var items = new Array();
ItemHandler.start = function (item, callback) {
items.push(item);
ItemHandler.timer();
};
ItemHandler.timer = function () {
var timer = setTimeout(function() {
console.log('test');
ItemHandler.timer();
}, 1000);
}
return ItemHandler;
};
module.exports = ItemHandler;
ItemHandler
现在是一个函数,因此
var itemHandler = require('./lib/item.handler.js')(socket)(res);
itemHandler.start(items);
或:
希望它能工作,还没有测试:)谢谢,还没有测试,但这会消除类的“单例”特性,对吗?虽然,我认为我上面的实现似乎也不是一个真正的单例,它让setTimeout堆积起来,运行的次数越多。是的,我想我的aproach不是一个单例,因为你可以调用
new
并获得一个新对象……但你为什么要这样做:)。然而,它是你的(技术上),但确实计时器会堆积起来。您可以很容易地对此进行调整…只需在它第一次调用timer()时初始化一些bool。ItemHandler类需要这些参数做什么?这可能会对解决方案产生重大影响。
var itemHandler = require('./lib/item.handler.js');
itemHandler(socket)(res).start(items);