从范围外调用“函数”

时间:2014-05-15 13:56:22

标签: node.js websocket

我需要这样的东西:

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

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

但是当新客户端连接时,这会一遍又一遍地定义函数,我不想在.broadcast中进行循环,因为最多可以有100k +客户端。我虽然以某种方式发光,但无法解决逻辑......我该怎么办?

1 个答案:

答案 0 :(得分:1)

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

如果您确实需要在foo中捕获变量,那么您需要按照它的方式进行捕获。根据{{​​1}}的复杂程度,这可能需要9-10毫秒来完成100,000次,因此对于许多用例来说应该没问题。

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