axios 为什么通过拦截器计算的请求时间,超过了预设的 timeout ?

发布于 2022-09-12 01:32:10 字数 1203 浏览 18 评论 0

在写爬虫脚本时用到了 axios,发现了这个比较让人困惑的地方。
timeout 不是指发起请求响应之间的最长时间吗 ?
如果 timeout 指的是等待响应的最长时间,那又该怎样获取 "从发起请求到开始响应" 的这一段等待响应的时间呢 ?

谢谢 希望有人解决我这个小白的疑惑

// end
axios.interceptors.response.use(function (response) {
  response.config.metadata.endTime = new Date().getTime()
  console.log(`end ${response.config.metadata.endTime}`)
  response.duration = response.config.metadata.endTime - response.config.metadata.startTime
  return response;
  }, function (error) {
    error.config.metadata.endTime = new Date().getTime();
    error.duration = error.config.metadata.endTime - error.config.metadata.startTime;
    return Promise.reject(error);
  });

// start
axios.interceptors.request.use(function (config) {
  config.metadata = { startTime: new Date().getTime()}
  console.log(`start ${config.metadata.startTime}`)
  return config;
  }, function (error) {
    return Promise.reject(error);
  });


axios.get(url, {
  timeout: 500,
  })
  .then((response) => {
    console.log(response.duration)
    return response.data;
  })
  .catch((error) => {
    console.log(error.message)
  })

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文