我正在开发一个项目,需要在网络服务器上从 C++ 代码到 JavaScript 进行通信。目前,我可以正确发送数据并且正在接收数据,但问题是我无法使用内部(onmessage)函数之外的数据。这仍然可以很好地覆盖网页的元素,但我尝试构建的图表无法获取实时数据。如果我将图表的代码放在内部函数中,整个程序就会冻结,并且我也无法从函数中获取变量以便在父级中使用它。现在,我只想从内部函数中获取数据,以便我可以使用它。那么,有什么方法可以让我从内部函数中提取数据并在父函数中使用它吗?
这是我的代码:
{
var x;
var ws = new WebSocket('ws://localhost:10011/');
ws.onmessage = function(event)
{
x = event.data;
var testing = document.getElementById('InnerFunctionOutput');
testing.innerHTML = "Run Time: " + x;
}
var testing = document.getElementById('ParentFunctionOutput');
testing.innerHTML = "Run Time: " + x;
}
当我运行此代码时,内部函数的输出是恒定的数据流,而父函数的输出是常量 1。如果有人可以帮助我找到解决方案,我将不胜感激。
另一种解决方案是将图表函数放在 websocket 函数中。这样,我就不必从函数中获取数据。然而,这个解决方案有其自身的一系列问题。如果您对此部分感兴趣,我将在下面放置一个链接,我会在其中询问此替代解决方案。
任何帮助将不胜感激。
谢谢, 卢克
我找到了解决问题的方法。为了从 websocket 函数中获取数据,我覆盖了页面上的文本元素,并简单地使该元素不可见。之后,只需读取文本元素即可将其放入代码的其余部分。但是,可能有更好的方法,所以请让我知道是否有。
此外,我在使用此解决方案时遇到了一个问题。当我最初尝试使用正常格式
document.getElementById('some id').innerHTML = some data;
时,它不起作用。但是当在开头添加“窗口”时window.document.getElementById('some id').innerHTML = some data;
它就起作用了。
设置 JavaScript 全局变量?