【问题标题】:Better ways to stop all future calls when there is no internet Connectivity没有互联网连接时停止所有未来呼叫的更好方法
【发布时间】:2023-03-27 06:11:01
【问题描述】:

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

我可以在 $httpProvider.interceptors 中添加什么,并停止所有呼叫并仅向用户显示您未连接到 Internet 的一条警报消息。

【问题讨论】:

    标签: javascript ajax angularjs


    【解决方案1】:

    可能是这样的:

    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 非常不可靠:/

    【讨论】:

      【解决方案2】:

      这是在 Javascript 中,而不是在 JQuery 中。

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

      为另一个文件创建一个 ping 函数,以测试互联网连接。如果没有成功,请将布尔值设置为 false。

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

      【讨论】:

        猜你喜欢
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 2019-06-05
        • 2021-06-01
        相关资源
        最近更新 更多