如何取消在拦截器中响应需要10毫秒以上的API调用

问题描述

我尝试使用takeuntil rxjs来实现这一点,

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

Stackblitz链接-Code Example

问题1-根据以上Stackblitz链接,我可以看到它会取消“检查网络”标签中的API调用,但不会从拦截文件中的setTimeout中为每个控制台打印console.log(“称为拦截器超时”)请求取消。

问题2-要解决此要求,还有其他最佳解决方案吗?

解决方法

仅使用Timeout运算符(如果Observable在给定的时间范围内未发出值,则会出错。),如下所示:

return next
  .handle(request)
  .pipe(
    timeout(1000 * 10),catchError(err => {
      ....
    }),)
while true; do curl -X DELETE https://blabla.com/api/v1/messages; sleep 604800; done