如果Http Response延迟超过2秒,Angular 6将显示微调器

时间:2018-11-19 12:32:00

标签: angular

我有这段代码可以拦截http请求:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.spinner.show();

return next.handle(req).do((event: HttpEvent<any>) => {
  if (event instanceof HttpResponse) {
    this.spinner.hide();
  }
}, (err: any) => {
  if (err instanceof HttpErrorResponse) {
    // hide spinner
    this.spinner.hide();

    // show error dialog
    let errorMessage = 'An unknown error occurred!';
    if (err.error.message) {
      errorMessage = err.error.message;
    }
    this.dialog.open(ErrorComponent, { data: { message: errorMessage } });
    return throwError(err);
  }
});  }

如何仅在http响应超过2秒时显示微调框?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用RxJS timer()运算符。

我建议在服务中执行此操作,在该服务中您可以在Observable对象上进行操作,而不是使用HTTP拦截器

更多信息进入documentation

// RxJS v6+
import { timer } from 'rxjs';

//emit 0 after 1 second then complete, since no second argument is supplied
const source = timer(1000);
//output: 0
const subscribe = source.subscribe(val => console.log(val));