2014-05-15 79 views
-2

我需要的东西在这个喜欢:呼叫从范围之外的“功能”

webSocketServer.on('connection', function(webSocket) { 
    function foo() { 
     //do stuff 
    } 
}); 

webSocketServer.broadcast = function (data) { 
    foo(); 
}; 

但是,当新的客户端连接,将一遍又一遍定义函数,我不希望在.broadcast中做一个循环,因为可以有高达100k +的客户端。我虽然想要发射,但无法解决逻辑......我该怎么办?

+0

你不能为呼叫者全局定义你的函数并向它发送参数吗? – micnic

+0

@micnic我不跟着你,你是什么意思?我需要一个函数/事件/无论在调用.broadcast时在连接事件中被触发... – user3054852

+0

现在编辑@Louis – user3054852

回答

1

如果您不需要捕获foo定义中的变量,那么您可以将其定义在.on('connection' ...块之外。

如果您确实需要捕获foo中的变量,那么您需要按照您拥有的方式进行操作。根据foo的复杂程度,这可能需要9-10ms来做10万次,所以对于很多用例来说应该没问题。

此外,使用function foo() {语法定义函数不会提升函数定义,因此您将无法在定义的函数范围之外访问它。