如何从socket.io获取返回值?

时间:2019-07-31 06:26:07

标签: node.js socket.io

我正在与node.jssocket.io合作, 而且我想获取一个变量,但是会引发错误。

io.sockets.on('connection', function(socket) {
    test = 1;
})

console.log(test) // ReferenceError: test is not defined

我尝试过的

io.sockets.on('connection', function(socket) {
    return test = 1;
})

预期结果

io.sockets.on('connection', function(socket) {
    test = 1;
})
console.log(test) // expected reslut test = 1

1 个答案:

答案 0 :(得分:1)

您的代码中有两个问题。

1。 JavaScript本质上是异步的。因此,该控件在继续下一行之前不会等待事件触发。

它与您的问题有什么关系?

io.sockets.on('connection', function(socket) {
    test = 1;
})

console.log(test)

仅在触发test=1事件时,函数(在其中分配connection的位置)才会执行。因此,javascript引擎会注册您的io.sockets.on(...),然后继续执行下一行,即console.log(test) 现在,由于事件尚未触发,因此没有为test

分配任何值

2。 test无法访问变量console.log(test)

假设您未处于strict模式,则在执行test行时,test = 1将得到 提升 它可以使用,但是在执行console.log(test)时,test=1尚未执行(第1点),因此引用错误。

因此,我建议您将console.log语句代码放入匿名函数的主体中。

io.sockets.on('connection', function(socket) {
    test = 1;
    console.log(test);
})