Javascript 如何将socket.on内函数的值保存到全局变量?
这可能非常简单,但我对Javascript编程和Socket IO的使用还相当陌生 当我想从函数内部给全局变量赋值时,过程相当简单:Javascript 如何将socket.on内函数的值保存到全局变量?,javascript,sockets,socket.io,Javascript,Sockets,Socket.io,这可能非常简单,但我对Javascript编程和Socket IO的使用还相当陌生 当我想从函数内部给全局变量赋值时,过程相当简单: var j; function a(){ j=2; } a(); //j is now 2 我现在的问题是,我有一个名为socket.on的方法,其中包含一个函数,如下所示: var j; socket.on('news', function (p) { j=p; //in here, j is equal to p }); //in here, j i
var j;
function a(){
j=2;
}
a();
//j is now 2
我现在的问题是,我有一个名为socket.on的方法,其中包含一个函数,如下所示:
var j;
socket.on('news', function (p) {
j=p;
//in here, j is equal to p
});
//in here, j is NOT p, it is undefined.
现在,在本例中,我希望全局变量j的值为p,但当我在函数外部打印j时,它是未定义的。我想这是因为我需要像a()这样的东西代码>在函数外部,如第一个示例中所示。
在这种情况下我怎么做
非常感谢。socket.on的第二个参数是所谓的回调函数,这是javascript中非常常见的模式。在您的示例中,您正在收听“新建”事件。发生此事件时,将使用参数p
触发回调。当然,此参数仅在回调函数本身内部可用
需要明确的是:您不直接调用第二个示例中的函数。一旦“新闻”事件发生,就会调用它
回调模式非常方便,因为它允许您编写非阻塞代码。当您等待“新闻”事件发生时,socket.on
调用后的任何代码都将正常执行。这就是您无法在回调外部访问p
的原因:您不知道回调将在何时调用
我想您应该读了更多关于Javascript或的内容。谢谢您的回答。问题是,我编写这段代码的目的是用从回调函数接收到的数据绘制一个图表,其中包含这些p
值。现在,为了创建和更新图表,我需要这些不断出现的p
值。问题是,如果我在socket.on内绘制图形,每次得到p
值时,我都会得到该图形的一个新副本,这是我不想要的。因此,我的目标是在socket.on方法外部创建图形(它只创建一次图形),同时从socket.on内部更新值。我尝试将这些p
点保存到数组中,我在socket.on外部声明,但是由于您所述的原因,数组不会将接收到的任何值保存到回调函数外部。这是我的问题。你可以参考这个链接来了解相关的代码:你真正的问题已经在另一个问题中解决了,对吗?我在这个问题上还有什么不清楚的地方需要我帮忙吗?是的,我的疑问已经消除了,非常感谢你的帮助