2012-04-03 5 views
0

node.jsで使用されているクラスがあり、必要なときにさまざまなオブジェクトを渡したいと思います。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; 

これは1つの私のルート、index.jsに呼び出されています。このように:

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

私のやりたいことは、私のルートで使用されている他のオブジェクトをこのファイルに渡すことです。これと同じです:

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

ここでは、ソケットオブジェクトを渡しています(socket.io接続と応答から返されます)。

これらの2つのパラメータを受け入れるようにクラスを構成するにはどうすればよいですか?

ありがとうございます!

+0

あなたItemHandlerを何クラスにはそれらのパラメータが必要ですか?それがソリューションに大きな影響を与える可能性があります。 –

答えて

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

はそれをテストしていない、それが動作ホープ:)

+0

ありがとう、それはまだテストされていませんが、これはクラスの 'シングルトン'の性質を削除するでしょうか?しかし、私の実装は実際にはシングルトンではないようですが、setTimeoutを積み重ねるほど、その実行回数は増えます。 – dzm

+0

あなたは 'new'を呼び出して新しいオブジェクトを得ることができるので、私のaproachはシングルトンではないと思いますが、どうしてそうするのですか?:)しかし、それは(tehnically)ですが、確かにタイマーは積み重なります。これを簡単に微調整することができます...最初にタイマー()を呼び出すだけです。 – mihai

+0

良い点 - ありがとう! – dzm

関連する問題