如何取消 API 在拦截器中响应时间超过 10 毫秒的调用

How to cancel API calls that take more than 10 ms to respond in interceptor

我尝试使用 takeUntil rxjs,

来实现这个

多次点击Call API按钮一定时间后不会取消所有API调用

Stackblitz link - Code Example

问题 1 - 根据上面的 Stackblitz link,我可以看到它会取消检查网络选项卡中的 API 调用,但它不会打印 console.log('called interceptor timeout') 来自每个取消请求的拦截器文件中的 setTimeout。

问题 2 - 处理此要求的其他最佳解决方案吗?

如下所示,您可以使用Timeout运算符(如果Observable在指定时间段内未能发出值,则会抛出错误)。

import { timeout } from 'rxjs/operators';
return next
  .handle(request)
  .pipe(
    timeout(1000 * 10),
    catchError(err => {
      ....
    }),
  )