以下代码旨在阻止用户在后端系统消失和/或脱机时执行任何操作。我遇到的问题是没有触发成功/错误。此外,没有新的网络请求出现在"网络"第一个请求输入后的chrome中的选项卡。我认为这可能是一个缓存问题,尽管文档说默认情况下禁用了缓存。所以我禁用了此请求的缓存,但它仍然没有在控制台中显示任何错误/成功。但是, 每次运行都会显示checking system status
。
var checkSystemStatus = function () {
var timeout = 4,
timerMessages = {};
timerMessages[0] = "Check system...";
timerMessages[timeout-1] = "Checking system in [[seconds]]...";
timerMessages[timeout] = "System is offline";
console.log('checking system status');
$http.get(apiUrl+'/system/isOnline', {cache: false}).
success(function(r) {
console.log('success');
if (r == 'true' && NotificationService.isBlockingDialogVisible()) {
document.location.reload(true);
} else if (r != 'true') {
NotificationService.showBlockingTimer(timerMessages, timeout);
}
}).
error(function (r) {
console.log('error');
NotificationService.showBlockingTimer(timerMessages, timeout);
});
setTimeout(function () {
checkSystemStatus();
}, (timeout+1) * 1000);
}
checkSystemStatus();
为什么我没有看到任何网络活动或获得成功/失败触发器的任何想法?
答案 0 :(得分:1)
尝试使用$timeout
而不是setTimeout
,否则你将会耗尽角度的“运行循环”,这可能就是原因。
答案 1 :(得分:0)
在编写几乎相同的东西时,我遇到了非常相似的东西,也是一个IsOnline函数。我通过在请求URL的末尾附加大的随机数作为查询字符串参数来绕过问题,以避免缓存。这并没有直接回答这个问题,但我发现它是一个合适的选择。