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来通知用户。

问题我如何实施警报以通知用户已发生的错误?

杰西·帕顿(Jess Patton)

尝试添加responseErrorrequestError像这样:

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

并再次使用requestError进行此操作,这是从有角度的http拦截器文档中获得的

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

responseError:当先前的拦截器抛出错误或被拒绝解决时,拦截器将被调用。

编辑以回答评论:

因此,如果您想发出警报,请responseError添加一个$rootScope.$broadcast('response:error')

在responseError函数中

然后在控制器中您要发出警报,只需执行

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

您也可以为 requestError

之所以起作用是因为$broadcast-将事件向下调度到所有子范围

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ionic + Angular POST请求返回状态404

来自分类Dev

Cordova / Ionic:仿真或在设备上运行时,$ http请求未处理

来自分类Dev

使用一个HTTP请求在Ionic Cordova中上传多个文件

来自分类Dev

Angular 2(Ionic 2):拦截Ajax请求

来自分类Dev

间隔上的Ionic2或Angular2 HTTP请求

来自分类Dev

Xamarin HTTP请求中的超时

来自分类Dev

如何为Ionic 2中的所有请求设置默认的Http标头?

来自分类Dev

过滤掉ionic 2 App中的http请求中不需要的信息

来自分类Dev

Ionic 2 / Ionic 3 / Ionic 4:(懒惰)正在加载微调器以获取图片

来自分类Dev

Ionic2中的多个$ http请求

来自分类Dev

$ http获取请求未在angularjs / ionic中及时完成

来自分类Dev

Dart Http包请求超时

来自分类Dev

从Ionic的HTTP请求获取响应

来自分类Dev

Ionic应用程序未加载位置

来自分类Dev

模拟$ http Angular Ionic

来自分类Dev

如何在Ionic Framweork中加载URL

来自分类Dev

Ionic框架图像未加载

来自分类Dev

Ionic http get请求(与Ionic一起)返回html数据

来自分类Dev

Angular 2(Ionic 2):拦截Ajax请求

来自分类Dev

Ionic2 http请求。XML到JSON?

来自分类Dev

Ionic2中的多个$ http请求

来自分类Dev

关闭 Ionic 2 中的加载

来自分类Dev

Ionic 2 - 发布请求后重新加载页面

来自分类Dev

IONIC 确保服务在加载之前

来自分类Dev

Ionic 2 正在加载过时的组件

来自分类Dev

ionic加载css文件的流程是什么?

来自分类Dev

Ionic 3 在 http 请求上显示加载符号

来自分类Dev

提高查询速度 Ionic/Laravel Post 请求

来自分类Dev

Ionic 4 & Laravel API - 对 http 请求获取空响应