我可以让JS的一部分连续运行吗?

时间:2017-01-26 17:39:29

标签: javascript electron

我正在开发电子应用程序(第一次使用电子)。我对javascript也很新,所以请原谅我的愚蠢。

在index.js文件中我有这个方法来检查网络连接是否存在并相应地更新div元素 -

function checkStatus() {
  var online = navigator.onLine;
  if(online){
    $(".net-status").html("<i class=\"fa fa-globe fa-2x\"></i> Connected");
  }
  else{
    $(".net-status").html("<i class=\"fa fa-globe fa-2x\"></i> Not Connected");
  }
}

我想让它连续运行,一旦用户断开互联网连接,将文本更改为&#34;未连接&#34;

我尝试在index.html文件中使用onkeypress事件监听器,但无法使其工作。

此外,我想知道是否有比事件监听器更好的方法来实现此目的。

2 个答案:

答案 0 :(得分:3)

当变量发生变化时,有一些事件监听器可以触发

window.addEventListener("offline", function(e) {
    $(".net-status").html("<i class=\"fa fa-globe fa-2x\"></i> Not Connected");
});

window.addEventListener("online", function(e) {
    $(".net-status").html("<i class=\"fa fa-globe fa-2x\"></i> Connected");
});

答案 1 :(得分:1)

你问的具体案例可以解决,因为@juvian说(处理所提供的事件)。

更一般的情况&#34;如何让代码连续运行&#34;可以使用setTimeoutsetInterval来处理。

以这种方式使用你的函数就是设置一个间隔来表示每半秒钟一次(单位为毫秒):

setInterval(checkStatus, 500);

setTimeout以相同的方式工作,除了不是每隔x秒连续发射一次,它会在x秒后触发一次。对于例如仍然非常有用轮询操作,因为你可以在每次轮询开始时设置一个新的超时,这与setInterval有微妙但重要的区别,即在请求完成后x秒,而不是在请求需要多长时间时触发x秒。使用setInterval进行轮询可能会导致资源争用。