node.js modules将对象传递给singleton

时间:2012-04-03 17:15:24

标签: javascript node.js express

我在node.js中使用了一个类,我想在需要时将各种对象传递给它。

这是班级:

    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.io连接和响应返回)。

我如何构建我的类以接受这两个参数?

非常感谢!

1 个答案:

答案 0 :(得分:1)

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);

或者:

var itemHandler = require('./lib/item.handler.js');
itemHandler(socket)(res).start(items);

希望它有效,没有测试过它:)