我很好奇。我只是尝试使用 .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/