Ionic HTTP请求加载超时



我使用以下显示加载屏幕每当我执行一个http请求,但有时如果有一个错误,那么它将保持加载(因为背景应用程序变得不可用)。而不是隐藏它在每个错误检查,我想知道是否有可能调用超时5秒后?

.config(function($httpProvider) {
    $httpProvider.defaults.timeout = 5000;
    $httpProvider.interceptors.push(function($rootScope) {
        return {
            request: function(config) {
                $rootScope.$broadcast('loading:show')
                return config
            },
            response: function(response) {
                $rootScope.$broadcast('loading:hide')
                return response
            }
        }
    })
})

根据Jess的回答,现在看起来像这样:

.config(function($httpProvider) {
    $httpProvider.defaults.timeout = 5000;
    $httpProvider.interceptors.push(function($rootScope) {
        return {
            request: function(config) {
                $rootScope.$broadcast('loading:show')
                return config
            },
            response: function(response) {
                $rootScope.$broadcast('loading:hide')
                return response
            },
            responseError: function(response) {
                $rootScope.$broadcast('loading:hide')
                return response
            },
            requestError: function(response) {
                $rootScope.$broadcast('loading:hide')
                return response
            }
        }
    })
})

然而,我似乎无法在requestError中放置警报来通知用户。

如何实现警报以通知用户已发生的错误?

尝试像这样添加responseErrorrequestError:

 responseError: function(responseError) {
                $rootScope.$broadcast('loading:hide')
                return responseError

,并对requestErro r重复此操作,这是来自angular的http拦截器docs

requestError:当前一个拦截器抛出错误或被拒绝解决时,拦截器被调用。

responseError:当前一个拦截器抛出错误或解析为拒绝时,将调用拦截器。

编辑回复评论:

所以如果你想在responseError上抛出一个警告,那么添加一个$rootScope.$broadcast('response:error')

中的responseError函数

然后在你想要抛出警报的控制器中输入

$scope.$on('response:error', function(){throw the error here});

您也可以对requestError

执行相同的操作

这个可以工作,因为$broadcast——向下分派事件到所有子作用域

相关内容

  • 没有找到相关文章

最新更新