【发布时间】:2023-03-27 06:11:01
【问题描述】:
我想在没有互联网连接时停止所有未来的 ajax 调用。我知道 $rootScope.isOnline = navigator.onLine;检查任一用户是否在线/离线的行。
我可以在 $httpProvider.interceptors 中添加什么,并停止所有呼叫并仅向用户显示您未连接到 Internet 的一条警报消息。
【问题讨论】:
标签: javascript ajax angularjs
我想在没有互联网连接时停止所有未来的 ajax 调用。我知道 $rootScope.isOnline = navigator.onLine;检查任一用户是否在线/离线的行。
我可以在 $httpProvider.interceptors 中添加什么,并停止所有呼叫并仅向用户显示您未连接到 Internet 的一条警报消息。
【问题讨论】:
标签: javascript ajax angularjs
可能是这样的:
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 非常不可靠:/
【讨论】:
这是在 Javascript 中,而不是在 JQuery 中。
创建一个布尔值,并在每次执行 Internet 请求时对其进行评估。
为另一个文件创建一个 ping 函数,以测试互联网连接。如果没有成功,请将布尔值设置为 false。
只是一个非常简单的想法...定期或每次拨打重要的互联网电话时调用它。
【讨论】: