如何防止node.js中的多个并发连接覆盖全局变量值?

时间:2017-07-12 20:56:03

标签: javascript node.js

我是node.js的新手,来自PHP。

我们说我有这段代码:

var socket;

function function1(){
    // Does something
}
function function2(){
    // Does something
}
function function3(){
    // Does something
}

套接字变量被实例化,并在用户连接到服务器时设置为值。在第一个用户将值设置为套接字变量后,它将保持该特定值,直到另一个用户连接并将另一个值设置为变量。

让我们说每个函数都使用全局范围内的套接字变量。

对于每个连接的用户,所有3个函数必须以与用户在连接到服务器时设置的完全相同的套接字值执行。如果新用户连接速度超过所有3个函数需要时间为单个用户执行,我怎样才能防止套接字变量被覆盖?

有没有比将socket变量传递给每个函数更好的方法?

2 个答案:

答案 0 :(得分:0)

使用ES6并使用const

分配功能可能是一种好习惯

此声明创建一个常量,其范围可以是全局的(在窗口对象上),也可以是声明它的块的本地。需要一个常量的初始化器;也就是说,你必须在声明它的同一语句中指定它的值(这是有道理的,因为它不能在以后更改)。

const声明创建对值的只读引用。它并不意味着它拥有的值是不可变的,只是不能重新赋值变量标识符。例如,在内容是对象的情况下,这意味着可以改变对象的内容(例如其参数)。

const socket;

答案 1 :(得分:0)

  

有没有比将socket变量传递给每个函数更好的方法?

不确定。只需将函数置于闭包中即可:

function newUser(…) {
    var socket;

    function function1(){
        // Does something
    }
    function function2(){
        // Does something
    }
    function function3(){
        // Does something
    }
}

然后为每个正在连接的用户调用newUser,这样每个人都可以获得自己的变量和一组函数来使用它。