如何防止应用程序继续进行,直到在JavaScript中准备好值或条件为止



我仍然是JavaScript的新手,我正在尝试使用WebSockets。我有一个应用程序的工作骨架,尽管它仍然存在我需要解决的问题。

如何向应用程序的其余部分发出信号,该应用程序可以使用?

socket = new WebSocket( 'wss://' + window.location.host + '/ws/manager/' );
while (socket.readyState != 1){
    // wait loop
}

创建插座时,它会立即返回,但尚未准备好进行通信。我的第一个想法是,我在检查状态时只是循环,这是我当前的解决方案,但这只是燃烧了CPU,并且会使应用程序无反应。引入延迟可以解决一些响应能力,但是在此处显示的是自己的问题:javaScript版本的sleep((是什么?例如 。我也知道,循环等待是一个否。

我看到的另一个解决方案是使用setTimeout()和一个回调来继续执行,但是我觉得这对代码阅读和写作非常破坏,并且可能仍然没有以更好的方式解决问题。p>这将是一个一页应用程序,由于AJAX或常规HTTP所需的连接数量,服务器通信将几乎完全使用Web插座进行。总的来说,我并不真正介意该应用会变得没有响应,因为没有Web插座,它将是无用的。

您可以在Websocket上收听" onopen"事件:

socket = new WebSocket('wss://' + window.location.host + '/ws/manager/');
socket.addEventListener('open', function (event) {
  socket.send('Hello socket server!');
  // Do more stuff with your socket
})

这样,您的应用程序将在加载Websocket时响应迅速,并且您不会浪费任何CPU。

有关Websocket API的更多信息,请在此处检查:https://developer.mozilla.org/en-us/docs/web/api/websocket

希望这会有所帮助!

最新更新