我希望在没有互联网连接时停止所有未来的ajax呼叫。我知道 $ rootScope.isOnline = navigator.onLine;用于检查用户是否在线/离线的行。
我可以在$ httpProvider.interceptors中添加任何内容,并停止所有呼叫并向用户显示一条警报消息,表明您未与互联网连接。
答案 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。
只是一个非常简单的想法...定期或每次拨打重要的互联网电话时都要打电话。