Javascript 通过python websockets发送JSON字符串后,使用JS解码JSON字符串
我的JavaScript代码无法读取JSON对象中的值Javascript 通过python websockets发送JSON字符串后,使用JS解码JSON字符串,javascript,python,python-3.x,websocket,p5.js,Javascript,Python,Python 3.x,Websocket,P5.js,我的JavaScript代码无法读取JSON对象中的值 我的设置是:Raspberry pi->python->Websockets上的传感器很难看到问题所在,因为我们无法判断您何时调用draw()onmessage()将是异步的,因此需要确保在调用onmessage()函数后调用draw()。这可能意味着从onmessage回调中调用draw()。它说sensordata是未定义的,所以问题是sensordata没有设置。我认为问题在于onmessage是在draw之后调用的。你能在onmes
我的设置是:Raspberry pi->python->Websockets上的传感器很难看到问题所在,因为我们无法判断您何时调用
draw()
onmessage()
将是异步的,因此需要确保在调用onmessage()
函数后调用draw()
。这可能意味着从onmessage
回调中调用draw()
。它说sensordata
是未定义的,所以问题是sensordata
没有设置。我认为问题在于onmessage
是在draw
之后调用的。你能在onmessage
中调用draw
吗?设置sensordata
之后?如果我尝试将draw()
放在onmessage
的内部,它就不起作用了。这显示了该代码。但是,如果我不使用json
而是使用单个字符串,那么它确实可以工作()。这是否表明顺序和嵌套不是原因?我发现唯一的解决方法是如果(typeof window.sensordata==“undefined”){hard code some values}或者{pressure=window.sensordata.pressure}
,就像前面的评论者所说的,在接收数据之前听起来有延迟,因此,sensordata
最初没有填充。与将draw
的定义放在onmessage
中不同,您只需在收到传感器数据后调用draw
。
var ws = new WebSocket("ws://127.0.0.1:1234/")
ws.onmessage = function(event){
window.sensordata = JSON.parse(event.data);
}
function setup(){ some code here }
function draw() {
ellipse(window.sensordata.humidity, 10,10,10)
}