使用rxjs延迟angular中的http响应

使用rxjs延迟angular中的http响应,angular,rxjs,Angular,Rxjs,我有一个拦截器负责向HTTP请求头添加访问令牌。在该拦截器中,我希望添加一些关于响应的异步操作。为了简单起见,我将使用rxjs interval运算符异步演示: return next.handle(authReq).pipe( ((source: Observable<HttpEvent<any>>) => { return new Observable<HttpEvent<any>>((sub: Subscriber&

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

    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());
    });
  })
);
返回下一个.handle(authReq).pipe(
((来源:可观察)=>{
返回新的可观察对象((子:订户)=>{
source.subscribe((
响应:HttpEvent)=>interval(1000).subscribe(()=>sub.next(响应)),
err=>sub.error(err),
()=>sub.complete());
});
})
);

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

您正在使用区间运算符。它将在每N个时段后触发一个事件。如果您只想延迟,那么使用操作符

为什么要使用如此复杂的东西,包括一个间隔(每秒发射:)来添加延迟?为什么不直接使用延迟操作符呢<代码>返回下一个.handle(authReq).pipe(延迟(1000))。为什么要推迟?你到底想实现什么?伙计们,我特别说过延迟只是一个测试用例。我不想实现延迟,我想实现一个操作符,在另一个可观察对象发出一个值之前,它不会在流中进一步响应。然后使用类似于
的方法返回zip(next.handle(authReq),otherObservable.pipe(map(array=>array[0])
.Hi的,它对我不起作用,因为只有当响应有一些值时,另一个异步进程才会启动。有人能解释一下为什么上面的例子不起作用吗?知道这对我帮助最大。伙计们,我特别说过延迟只是一个测试用例。我不想实现延迟,我想实现一个操作符,在另一个可观察对象发出一个值之前,它不会在流中推进响应。