当同时存在多个请求时,Angular Interceptor无法计算正确的API响应时间

时间:2020-07-14 07:17:04

标签: angular angular6 angular5 angular7 angular8

重现此问题的步骤:

  1. 第一个API调用响应将在600毫秒内到达。
  2. 在第一个API调用响应时间内,另一个4个API请求将发送到拦截器,并且此过程还要花1秒钟。

问题是拦截器将请求作为优先级处理,但是First API调用响应已在600毫秒内准备好,但是一旦所有请求处理完毕,它将返回响应,这意味着大约1.6秒,这不是正确的计算时间。 / p>

计算API响应时间的逻辑。

const startTime = new Date().getTime();

next.handle(req).pipe(
  map((event) => {
     const endTime = new Date().getTime();
     const diff = (endTime - startTime)/1000 + 'Seconds'; 
     return event;
  })
)

1 个答案:

答案 0 :(得分:0)

我遇到了问题,从一页继续到另一页,我已经提交了任务API。此Submit Task API具有另一个API调用giftcardcompatibility,我们以异步/订阅模式调用此API,并基于SubmitTask API调用导航到下一页。当下一页开始时,该时间段的Splunk调用将进入拦截器,并且所有Splunk调用都处于同步/拓扑同步状态,因此它被注册在主流中,因为giftcardcompatibility调用是异步调用,因此已在事件循环和事件中注册循环在主循环之后执行,因此响应在同步调用之后出现。