没有互联网连接时,更好的方法来阻止所有未来的呼叫

时间:2013-12-31 07:00:07

标签: javascript ajax angularjs

我希望在没有互联网连接时停止所有未来的ajax呼叫。我知道 $ rootScope.isOnline = navigator.onLine;用于检查用户是否在线/离线的行。

我可以在$ httpProvider.interceptors中添加任何内容,并停止所有呼叫并向用户显示一条警报消息,表明您未与互联网连接。

2 个答案:

答案 0 :(得分:2)

也许是这样的:

var module = angular.module("app", []);
module.factory("ConnectivityService", function ($window) {
    var service = {
        connected: true
    };
    $window.addEventListener("offline", function(e) {
        alert("offline");
        service.connected = false;

    });
    $window.addEventListener("online", function(e) {
        alert("online");
        service.connected = true;

    });
    return service;
});
module.factory("ConnectedInterceptor", function ($q, ConnectivityService) {
    return {
        request: function (config) {
            if (ConnectivityService.connected) {
                return config || $q.when(config);
            }
            return $q.reject(config);
        }
    };
});
module.config(function ($httpProvider) {
    $httpProvider.interceptors.push('ConnectedInterceptor');
});

尽管这个navigator.onLine非常不可靠:/

答案 1 :(得分:1)

这是Javascript,而不是JQuery。

创建一个布尔值,并在每次进行互联网请求时对其进行评估。

创建一个ping函数,只对另一个文件,以测试Internet连接。如果布尔值不成功,则将其设置为false。

只是一个非常简单的想法...定期或每次拨打重要的互联网电话时都要打电话。