首页 > 解决方案 > 使用rxjs以角度延迟http响应

问题描述

我有拦截器负责将访问令牌添加到 HTTP 请求标头。在那个拦截器中,我希望添加一些关于响应的异步操作。为了简单起见,我将使用 rxjs 间隔运算符异步演示:

    return next.handle(authReq).pipe(
  ((source: Observable<HttpEvent<any>>) => {
    return new Observable<HttpEvent<any>>((sub: Subscriber<HttpEvent<any>>) => {
      source.subscribe((
        response: HttpEvent<any>) => interval(1000).subscribe(() => sub.next(response)),
        err => sub.error(err),
        () => sub.complete());
    });
  })
);

我预计在处理响应时会出现 1 秒的延迟,但总体而言,该应用程序应该可以正常工作。但事实并非如此。Angular 似乎一次又一次地尝试发送请求。似乎是什么问题?

标签: angularrxjs

解决方案


您正在使用区间运算符。它会在每 n 个时间段后触发一个事件。如果您只想延迟,请使用延迟运算符


推荐阅读