2012-04-03 35 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; 

這是被稱爲在一個我的路線,index.js。像這樣:

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

我想要做的是將我的路徑中使用的其他對象傳遞給此文件。與此相似:

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

在這裏,我會傳入socket對象(從socket.io連接和一個響應返回)。

我將如何構建我的類來接受這兩個參數?

非常感謝!

+0

什麼是您的ItemHandler類需要那些參數?這可能會大大影響解決方案。 – 2012-04-03 19:39:58

回答

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 2012-04-03 18:22:29

+0

是的,我想我的aproach不是一個單身人士,因爲你可以調用'new'並獲得一個新的對象......但你爲什麼要這麼做:)。然而,你的確是(技術性的),但實際上定時器會堆積如山。你可以很容易地調整它...只是初始化一些布爾第一次計時器()它調用。 – mihai 2012-04-03 19:04:43

+0

好點 - 謝謝! – dzm 2012-04-03 19:08:58