全局添加标头和超时请求

时间:2017-06-20 10:05:55

标签: angular ionic2 ionic3

我做了一个拦截器服务,看看请求的错误是401(unAuthorized)转到带有show的登录页面还是全局隐藏加载。 但仍需要使用此服务(拦截器服务)全局添加标头,而不是在每个请求上添加标头。 第二,我还需要添加超时(30000)如果请求在30秒后没有回复响应, 我在每个请求它手动尝试它但我遇到了hideLoadding的问题,因为我也全局配置加载。 拦截器服务代码:

 this.events.subscribe('unAuthorizedRequest', (err) => {
      if (!_.endsWith(err.url, '/token')) {
        this.nav.setRoot(LoginPage);
      }
    });

    this.events.subscribe('showLoader', () => {
      this.numberOfLoading = this.numberOfLoading + 1;
      if(this.numberOfLoading === 1){
        this.loader = this.loaderService.presentLoading();
      }

    });

    this.events.subscribe('hideLoader', () => {
      if(this.numberOfLoading === 1){
        this.loader.dismiss();
        this.numberOfLoading = 0;
      }
      if(this.numberOfLoading > 0){
        this.numberOfLoading = this.numberOfLoading - 1;
      }

    });
应用程序组件中的

{{1}}

1 个答案:

答案 0 :(得分:2)

要全局处理超时,您可以通过以下方式直接利用timeout运算符:

intercept(observable: Observable<Response>): Observable<Response> {
  this.events.publish('showLoader');
  return observable
    .timeout(2000, new Error('delay exceeded')) // <-------
    .catch( ... );
}

关于全局添加标头,您可以利用getRequestOptionArgs方法。

有关详细信息,请参阅此文章: