【发布时间】:2021-03-15 10:42:22
【问题描述】:
我今天正在编写我的第一个 Angular 应用程序。现在我想检查与服务器的连接。如果它离线,应该会出现一个屏幕,上面写着“你离线,但你需要一个连接”。我有一个非常好的 JavaScript 函数。但是现在,我只能在单击特定按钮时检查我的连接状态。但是我想经常检查连接,所以如果连接关闭,屏幕会立即出现。
我从 2 年开始就开始编程,过去我经常听到“不要使用无限循环”或“从不使用无限循环”等句子。
我的问题是,在这种情况下可以使用无限循环吗?还是有其他解决方法?
我的代码很简单:
var isOnline;
function testIfOnline() {
if(navigator.onLine) {
if (!isOnline) {
hideConnectionView();
}
isOnline = true;
} else {
if (isOnline) {
console.log("Die Verbindung zum Server wurde unterbrochen!");
} else {
console.log("Es konnte keine Verbindung zum Server aufgebaut werden!");
}
isOnline = false;
//Restlicher Code:
showConnectionView();
}
}
- 问题: 是否有特定规则规定,何时允许使用无限循环或其他内容?
【问题讨论】:
-
“允许”谁?当人们说有这样的“规则”时,他们的意思不是“你会因为这样做而受到一些权威的惩罚”,他们的意思是“这样做是个坏主意”。与其寻找何时这是一个坏主意,不如试着理解为什么这是一个坏主意;那么您就可以对可能适用于您的特定情况的权衡做出自己的决定。
-
在其他语言中一直使用无限循环,但在 Javascript 中轮询服务器并不是我要使用的(您将阻塞主线程/唯一线程)。使用
setInterval,这就是它的用途。或者可能是 websockets,尽管这是一个更复杂的话题。 -
这里的其他几个程序员说过。我在技术上被允许使用它们,但他们说,我应该尽量避免无限循环。
-
@JaredSmith 是的,我会用 Web Socket API 做到这一点
标签: javascript html node.js angular infinite-loop