Модули node.js передают объект в синглтон - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть класс, который используется в 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 Ответ

1 голос
/ 03 апреля 2012
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);

Надеюсь, что это работает, не проверял это:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...