我在Angular(带有Ionic)应用程序中有一段代码:
my_app.factory('connectivityInterceptorService', ['$q', '$rootScope', function ($q, $rootScope) {
var connectivityInterceptorServiceFactory = {};
var _request = function (config) {
if(navigator.connection) {
if(navigator.connection.type == Connection.NONE) {
}
}
return config;
};
connectivityInterceptorServiceFactory.request = _request;
return connectivityInterceptorServiceFactory;
}])
navigator.connection可以返回"类型" (使用cordova插件)的连接(wifi,3G,无等......)。 这段代码工作正常,我可以检测设备是否有连接。问题是:我想,在这个if语句中,"取消"请求。但我无法弄清楚是否有可能。
答案 0 :(得分:2)
据我所知,如果你使用好的旧的$ http来发出请求,那么'超时'请求的属性可以附加到承诺并在解决承诺时解决:
摘自指南:(链接如下)
// The timeout property of the http request takes a deferred value
// that will abort the underying AJAX request if / when the deferred
// value is resolved.
所以你可以做的是让你的连接函数返回对$ http超时的承诺,并将其解析为某个值,以便在没有连接的情况下激活超时。
指南链接:http://www.bennadel.com/blog/2616-aborting-ajax-requests-using-http-and-angularjs.htm
希望它有所帮助!