Angular:拦截ajax请求,检查互联网连接,不发送请求

时间:2015-07-24 11:06:35

标签: javascript angularjs cordova ionic-framework ionic

我在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语句中,"取消"请求。但我无法弄清楚是否有可能。

1 个答案:

答案 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

希望它有所帮助!