如何取消 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 => {
....
}),
)
我尝试使用 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 => {
....
}),
)