angular - Angular 中的延迟 HTTP 请求

标签 angular rxjs rxjs6

我很好奇。我只是尝试使用 .pipe( delay( 5000 ) )... 在 Angular (6.x) 中延迟 HTTP 请求但看起来,RxJS 只是延迟了最终响应,而不是服务器调用。但我真的需要延迟真正的服务器调用。通过 HttpInterceptor 在 AngularJS 中这不是问题,但我无法让它工作。有任何想法吗?

提前谢谢。

更新:

我已经尝试过 HttpInterceptor 但这也不起作用。我有一个 CustomHttpClient,它将正在运行的请求 url 放入一个数组中,并在完成后将其删除。某些请求无法并行运行,因此我必须检查列表中是否有来自例如的待处理调用/api/somePath.如果这样的 url 在列表中,则必须延迟当前请求。在 AngularJS 的 HttpInterceptor 中工作正常。

最佳答案

我喜欢那些拦截器,因为你可以用它们做很多魔法。

在拦截器中处理 http 调用的 RESPONSE

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
      tap(response=> console.log(response) )  // <== or do some other magic
    );
  }
}

在拦截器中处理 http 调用的请求,例如延迟它。
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return timer(2000).pipe(         // <== Wait 2 Seconds
      switchMap( ()=> next.handle(request) )   // <== Switch to the Http Stream
    )
  }
}

在这两种情况下,它是相同的“intercept(...)”方法,但对“next.handle()”的处理不同。

温暖的问候

关于angular - Angular 中的延迟 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51403387/

相关文章:

javascript - 在 Angular 中使用 google-diff-match-patch

typescript - TypeError : self. parent.parent.parent.context 不是函数 Angular 2

javascript - *ng不更新,即使有 ChangeDetectorRef

angular - 如何观察rxjs中的属性变化?

angular6 - Angular v6、rxjs v6 错误 TS2339 : Property 'pipe' does not exist on type 'OperatorFunction

angular - ng : 'mat-table'  is not a known element

Angular 7 - 收到错误 : 'rxjs has no exported member ' Observable'

javascript - Angular - 观察者 map 未按预期工作

angular - 将一个 Observable<string> 和一个 Array<Observable<string>> 组合成一个 Observable<{string, string[]}>

RxJS 动态可观察源