我试图创建一个等待布尔变量变为true的脚本并将文本记录到控制台。以下代码将等待s1,然后在变量为true时将消息打印到控制台。
while(s1 === false) {}
console.log("s1");
使用websocket的onmessage设置s1变量。以下代码将设置变量并初始化websocket
// initializing the websocket
conn = {}, window.WebSocket = window.WebSocket || window.MozWebSocket;
openConnection();
s1 = false;
function openConnection() {
// uses global 'conn' object
if (conn.readyState === undefined || conn.readyState > 1) {
conn = new WebSocket('ws://localhost:8100');
conn.onmessage = function (event) {
if (event.data == "S1")
s1 = true;
else if (event.data == "S2")
s2 = true;
else if (event.data == "S3")
s3 = true;
console.log(s1 + " " + s2 + " " + s3);
};
}
}
}
代码应该工作得很好,但由于javascript是一种单线程语言,因此变量s1永远不会更新。直到while循环完成。
我尝试过使用worker但我需要更改DOM并访问全局变量,这是工作者的限制。此外,时间在这个剧本中非常重要。
我想知道有没有办法让我检查是否有任何排队等待收到的按摩并等到收到它们?或者我可以在进行循环时对任何排队的任务进行全面检查吗?
谢谢:)