0

下面的代码旨在阻止用户在后端系统消失和/或离线时执行任何操作。我遇到了一个没有触发成功/错误的问题。此外,在第一个请求条目之后,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();

关于为什么我没有看到任何网络活动或获得成功/失败触发器的任何想法?

4

2 回答 2

1

尝试使用$timeout而不是setTimeout,否则您将用完 angular 的“运行循环”,这可能就是原因。

于 2013-05-30T19:04:16.310 回答
0

在编写几乎相同的东西时,我遇到了非常相似的东西,也是一个 IsOnline 函数。我通过在请求 URL 的末尾附加大随机数作为查询字符串参数来绕过这个问题,以避免缓存。这并不能直接回答这个问题,但我发现它是一个合适的选择。

于 2013-05-30T19:03:09.443 回答