拦截器中的角度 http 请求时间

Posted

技术标签:

【中文标题】拦截器中的角度 http 请求时间【英文标题】:Angular http request time in interceptor 【发布时间】:2018-01-05 14:32:58 【问题描述】:

我正在制作一个拦截器来记录我的 http 请求。

到目前为止,一切都很好,一切都按预期工作。

我现在想要的是获取执行请求所花费的时间。

我以为我可以做这样的事情

const start = Date.now();
return next
  .handle(req)
  .map(res => 
    console.log('took ' + (Date.now() - start) + 'ms');
    return res;
  )

但是控制台显示1到2ms,而网络显示超过50ms……我认为我应该在创建请求时就创建起始值,但我不知道如何。

有什么解决办法吗?

PS:我的 linting 配置禁止我使用 console.time()

【问题讨论】:

【参考方案1】:

使用performance.now() 以毫秒为单位测量持续时间

var start = performance.now(); 

return next
  .handle(req)
  .map(res => 
    console.log('took ' + (performance.now() - start) + 'ms');
    return res;
  )

更多信息请查看this

【讨论】:

不知道,谢谢,但更糟糕的是:D 我刚刚做了一个编辑,说我应该在创建请求时实例化起始值,但是由于 Angular 正在抽象所有过程,我不知道怎么做。无论如何,+1 教我一些东西! 您解决过这个时间差异吗?我遇到了类似的问题,但我在浏览器的网络选项卡中看到 300 毫秒,在我的日志中看到 17,000 毫秒。

以上是关于拦截器中的角度 http 请求时间的主要内容,如果未能解决你的问题,请参考以下文章

如何使用httpclient拦截角度jsonp请求

以角度添加拦截器后的CORS问题

如何将异步服务用于角度 httpClient 拦截器

如何使角度模块忽略核心模块中添加的http拦截器

令牌刷新后Angular 4拦截器重试请求

Dio(Dart 的 Http 客户端)获取请求不适用于拦截器