使用无限循环来不断检查与服务器的连接是否可以?
Is it okay to use an infinite loop to constantly check the Connection to a Server?
我今天正在编写我的第一个 Angular 应用程序。现在我想检查与服务器的连接。如果它处于离线状态,则会出现一个屏幕,上面写着类似“你离线,但你需要连接”之类的内容。我有一个 JavaScript 函数,它做得很好。但是现在,我只能在单击特定按钮时检查我的连接状态。但是我想经常检查连接,所以如果连接关闭,屏幕会立即出现。
我从两年前开始编程,过去我经常听到“不要使用无限循环”或“永远不要使用无限循环”等句子。
我的问题是,在这种情况下可以使用无限循环吗?或者有其他解决方法吗?
我的代码非常简单:
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();
}
}
- 问题:
是否有特定规则规定何时允许使用无限循环或其他内容?
不行 :D 在这种情况下,无休止地调用一个函数是不必要的,因为有事件,所以太过分了。
考虑一下:
import {fromEvent, merge} from 'rxjs'
merge(
fromEvent(window, 'online'),
fromEvent(window, 'offline'),
).subscribe(
() => {
const condition = navigator.onLine ? "online" : "offline";
console.log(condition);
}
)
编辑:为了解决拔掉机器时这不起作用的事实,我们可以像这样扩展它:
import { interval, merge, fromEvent } from 'rxjs';
import { mapTo } from 'rxjs/operators';
merge(
fromEvent(window, 'online'),
fromEvent(window, 'offline'),
interval(1000),
).pipe(
mapTo(navigator.onLine),
).subscribe(
online => {
const condition = navigator.onLine ? "online" : "offline";
console.log(condition);
}
)
您可以使用 nodemon 持续 运行 您的服务器 nodemon
我今天正在编写我的第一个 Angular 应用程序。现在我想检查与服务器的连接。如果它处于离线状态,则会出现一个屏幕,上面写着类似“你离线,但你需要连接”之类的内容。我有一个 JavaScript 函数,它做得很好。但是现在,我只能在单击特定按钮时检查我的连接状态。但是我想经常检查连接,所以如果连接关闭,屏幕会立即出现。
我从两年前开始编程,过去我经常听到“不要使用无限循环”或“永远不要使用无限循环”等句子。
我的问题是,在这种情况下可以使用无限循环吗?或者有其他解决方法吗?
我的代码非常简单:
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();
}
}
- 问题: 是否有特定规则规定何时允许使用无限循环或其他内容?
不行 :D 在这种情况下,无休止地调用一个函数是不必要的,因为有事件,所以太过分了。
考虑一下:
import {fromEvent, merge} from 'rxjs'
merge(
fromEvent(window, 'online'),
fromEvent(window, 'offline'),
).subscribe(
() => {
const condition = navigator.onLine ? "online" : "offline";
console.log(condition);
}
)
编辑:为了解决拔掉机器时这不起作用的事实,我们可以像这样扩展它:
import { interval, merge, fromEvent } from 'rxjs';
import { mapTo } from 'rxjs/operators';
merge(
fromEvent(window, 'online'),
fromEvent(window, 'offline'),
interval(1000),
).pipe(
mapTo(navigator.onLine),
).subscribe(
online => {
const condition = navigator.onLine ? "online" : "offline";
console.log(condition);
}
)
您可以使用 nodemon 持续 运行 您的服务器 nodemon